home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / utilities / misc / vs122.lha / VoiceShell / Source / VS.S next >
Encoding:
Text File  |  1994-12-13  |  138.3 KB  |  6,994 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1992-94        *
  4. *                        *
  5. *          by Tomi Blinnikka        *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    13/06/1992-            *
  10. *     -0.99v 20/06/1992            *
  11. *                        *
  12. * Version 1.00    07/02/1993            *
  13. *                        *
  14. * Changed parser                *
  15. *                        *
  16. * Added: From option, generic sampler, timer    *
  17. *     selection, fixed lotsa bugs        *
  18. *                        *
  19. * BUGS: Loaded wrong data file on startup    *
  20. *                        *
  21. * Version 1.01    11/02/1993            *
  22. *                        *
  23. * Changed name from VShell to VoiceShell    *
  24. *                        *
  25. * BUGS:                        *
  26. *                        *
  27. * Version 1.02    14/02/1993            *
  28. *                        *
  29. * Added load gadget                *
  30. *                        *
  31. * BUGS:                        *
  32. *                        *
  33. * Version 1.03    18/05/1993            *
  34. *                        *
  35. * Fixed some font stuff                *
  36. *                        *
  37. * BUGS:                        *
  38. *                        *
  39. * Version 1.04    25/05/1993            *
  40. *                        *
  41. * Added DSS 8 support, needs voice.library,    *
  42. * version 7                    *
  43. *                        *
  44. * Added priority                *
  45. *                        *
  46. * Version 1.05    30/05/1993            *
  47. *                        *
  48. * Added priority resetting            *
  49. *                        *
  50. * Version 1.06    02/06/1993            *
  51. *                        *
  52. * Added channel select & mic/line select    *
  53. * Requires voice.library, version 8.0        *
  54. *                        *
  55. * Version 1.07    10/06/1993            *
  56. *                        *
  57. * Fixed few things in Set(Mic/Line/Right/Left).    *
  58. *                        *
  59. * Version 1.08    19/06/1993            *
  60. *                        *
  61. * Optimized and searched for voice.library 8.1    *
  62. * bug. Bug was in library, version bumped.    *
  63. *                        *
  64. * Version 1.09    21/06/1993            *
  65. *                        *
  66. * ARexx control added                *
  67. *                        *
  68. * Version 1.10    17/07/1993            *
  69. *                        *
  70. * Optimized.                    *
  71. *                        *
  72. * Version 1.11    21/07/1993            *
  73. *                        *
  74. * Implemented ARexx LOAD command. Fixed bug    *
  75. * with 'Vol Dwn' gad & Left channel.        *
  76. *                        *
  77. * Version 1.12    08/08/1993            *
  78. *                        *
  79. * Increased command string length.        *
  80. *                        *
  81. * Version 1.13    11/08/1993            *
  82. *                        *
  83. * Added ability to wedge fate Input Events    *
  84. * directly.                    *
  85. *                        *
  86. * Version 1.14    13/09/1993            *
  87. *                        *
  88. * Added PUBSCREEN tooltype and CLI option.    *
  89. *                        *
  90. * Version 1.15    19/09/1993            *
  91. *                        *
  92. * Added 'Get'-gadget into Command window.    *
  93. *                        *
  94. * Version 1.16    26/09/1993            *
  95. *                        *
  96. * Made VoiceShell a commodity.            *
  97. *                        *
  98. * Fixed some bugs that made it crash if ARexx    *
  99. * commands executed while editing.        *
  100. *                        *
  101. * Quitting made safer.                *
  102. *                        *
  103. * Version 1.17    05/10/1993            *
  104. *                        *
  105. * Localized a few internal things.        *
  106. *                        *
  107. * Added 'HIDE' & 'SHOW' ARexx commands.        *
  108. *                        *
  109. * Added CX_PRI tooltype code.            *
  110. *                        *
  111. * Version 1.18    31/10/1993            *
  112. *                        *
  113. * Fixed bug with getting font sizes etc.    *
  114. *                        *
  115. * Re-wrote a-hell-of-a-lot of code. The guy who    *
  116. * gave me the idea of making VS into a         *
  117. * commodity should be shot :)            *
  118. *                        *
  119. * BUGS: Crashed on some machines if no prefs    *
  120. *    file available.                *
  121. *                        *
  122. * Version 1.19    24/01/1994            *
  123. *                        *
  124. * Added: Error commands.            *
  125. *                        *
  126. * Version 1.20    08/03/1994            *
  127. *                        *
  128. * Added: Confirmation and wake up command    *
  129. *                        *
  130. * Version 1.21    13/03/1994            *
  131. *                        *
  132. * Fixed bug with tooltypes            *
  133. *                        *
  134. * Version 1.22    02/04/1994            *
  135. *                        *
  136. * Fixed 'bug' in the awake function, it wasn't    *
  137. * reset when a new value was selected.        *
  138. *                        *
  139. * Fixed 2 enforcer hits with file requesters.    *
  140. *                        *
  141. * Fixed something that might have turned out as    *
  142. * a bug later (a pointer was wrong after     *
  143. * replying to timer.device).            *
  144. *                        *
  145. * Fixed enforcer hit from emergency shutdown.    *
  146. *                        *
  147. *                        *
  148. * STILL TO CHECK:                *
  149. *                        *
  150. * -                        *
  151. * -                         *
  152. *                        *
  153. *************************************************
  154.  
  155. ;    INCDIR    "INCLUDES:"
  156.     INCLUDE "JMPLibs.i"
  157.     INCLUDE "exec/memory.i"
  158.     INCLUDE "exec/io.i"
  159.     INCLUDE "exec/tasks.i"
  160.     INCLUDE "libraries/dosextens.i"
  161.     INCLUDE "libraries/dos.i"
  162.     INCLUDE "libraries/commodities.i"
  163.     INCLUDE "libraries/gadtools.i"
  164.     INCLUDE    "libraries/voice.i"
  165.     INCLUDE    "libraries/asl.i"
  166.     INCLUDE "workbench/startup.i"
  167.     INCLUDE "intuition/gadgetclass.i"
  168.     INCLUDE "dos/dostags.i"
  169.     INCLUDE    "rexx/errors.i"
  170.     INCLUDE    "rexx/storage.i"
  171.     INCLUDE    "devices/timer.i"
  172.  
  173.     INCLUDE "XREF:2.0.xref"
  174.     INCLUDE "XREF:intuition.xref"
  175.     INCLUDE "XREF:exec.xref"
  176.     INCLUDE "XREF:dos.xref"
  177.     INCLUDE "XREF:icon.xref"
  178.  
  179.     XREF    _InvertString
  180.     XREF    _FreeIEvents
  181.     XREF    _HotKey
  182.  
  183.     XDEF    _DOSBase
  184.     XDEF    _SysBase
  185.     XDEF    _CxBase
  186.  
  187. DVoice        SET    1
  188. ;VS_REGISTERED    SET    1    ;Set only for registered versions!
  189.  
  190. PROGVERSION:    macro
  191.         dc.b    "1.22 (02.04.94)"
  192. ;        dc.b    "0.22 (07.05.94)"
  193.         endm
  194.  
  195. GA_DISABLED:    EQU    GA_Disabled
  196.  
  197. VSFileVersion:    EQU    'VS04'
  198.  
  199. ShellTop:    EQU    2
  200. OptionTop:    EQU    46
  201. VocabSIZE:    EQU    60
  202. NUMGADS:    EQU    10
  203. GADLENG1:    EQU    16
  204. GADLENG2:    EQU    256
  205. GADLENGTH:    EQU    (GADLENG1+GADLENG2)
  206.  
  207. AccVal1:    EQU    2000
  208. AccVal2:    EQU    2400
  209. AccVal3:    EQU    2700
  210. AccVal4:    EQU    3000        ;VoiceShell default
  211. AccVal5:    EQU    3500
  212. AccVal6:    EQU    4000
  213. AccVal7:    EQU    5500
  214. AccVal8:    EQU    6000
  215.  
  216. Samp1MenuN:    EQU    $0002        ;0002
  217. Samp2MenuN:    EQU    $0802        ;0802
  218. Samp3MenuN:    EQU    $1002        ;1002
  219. Samp4MenuN:    EQU    $1802        ;1802
  220. ResLoMenuN:    EQU    $0022        ;0022
  221. ResHiMenuN:    EQU    $0822        ;0822
  222.  
  223. Acc1MenuN:    EQU    $0042        ;0042
  224. Acc2MenuN:    EQU    $0842        ;0842
  225. Acc3MenuN:    EQU    $1042        ;1042
  226. Acc4MenuN:    EQU    $1842        ;1842
  227. Acc5MenuN:    EQU    $2042        ;2042
  228. Acc6MenuN:    EQU    $2842        ;2842
  229. Acc7MenuN:    EQU    $3042        ;3042
  230. Acc8MenuN:    EQU    $3842        ;3842
  231.  
  232. Chan1MenuN:    EQU    $0062        ;0062
  233. Chan2MenuN:    EQU    $0862        ;0862
  234.  
  235. Input1MenuN:    EQU    $0082        ;0082
  236. Input2MenuN:    EQU    $0882        ;0882
  237.  
  238. Timer1MenuN:    EQU    $00A2        ;00A2
  239. Timer2MenuN:    EQU    $08A2        ;08A2
  240.  
  241. Wake1MenuN:    EQU    $00C2        ;00C2
  242. Wake2MenuN:    EQU    $08C2        ;08C2
  243. Wake3MenuN:    EQU    $10C2        ;10C2
  244. Wake4MenuN:    EQU    $18C2        ;18C2
  245. Wake5MenuN:    EQU    $20C2        ;20C2
  246.  
  247. ConfirmMenuN:    EQU    $0102        ;00E2
  248.  
  249. TRUE:        EQU    1
  250. FALSE:        EQU    0
  251. do_ToolTypes:    EQU    $36
  252.  
  253.         section VS,CODE
  254.  
  255.         push    d2-d7/a2-a6
  256.  
  257.         sub.l    a1,a1            ;Find our task
  258.         lib    Exec,FindTask
  259.         move.l    d0,OurTask
  260.         move.l    d0,a4
  261.         move.l    pr_CLI(a4),d0
  262.         bne    OpenDos
  263.  
  264.         lea.l    pr_MsgPort(a4),a0
  265.         lib    Exec,WaitPort
  266.         lea.l    pr_MsgPort(a4),a0
  267.         lib    Exec,GetMsg
  268.         move.l    d0,WBMsg
  269.  
  270. OpenDos:    openlib Dos,NoDos        ;Keep at beginning
  271.  
  272.         tst.l    WBMsg
  273.         beq    CLIStart
  274.  
  275.         lea.l    NILName,a0
  276.         move.l    a0,d1
  277.         move.l    #MODE_OLDFILE,d2
  278.         lib    Dos,Open
  279.         move.l    d0,NILFile
  280.         beq    ShutDown
  281.         move.l    NILFile,_stdout
  282.  
  283.         openlib Icon,NoIcon
  284.  
  285.         move.l    WBMsg,a0
  286.         move.l    sm_ArgList(a0),a1
  287.         move.l    wa_Lock(a1),d1
  288.         lib    Dos,CurrentDir
  289.         move.l    d0,OldLock
  290.  
  291.         move.l    WBMsg,a0
  292.         move.l    sm_ArgList(a0),a1
  293.         move.l    wa_Name(a1),a0
  294.         lib    Icon,GetDiskObject
  295.         move.l    d0,DiskObject
  296.         beq    MainStart
  297.  
  298. DoToolType1:    move.l    DiskObject,a4
  299.         move.l    do_ToolTypes(a4),a0
  300.         lea.l    ICONIFYText1,a1
  301.         lib    Icon,FindToolType
  302.         tst.l    d0
  303.         beq    DoToolType2
  304.         move.l    d0,a0
  305.         lea.l    YESText1,a1
  306.         lib    Icon,MatchToolValue
  307.         tst.l    d0
  308.         beq    DoToolType2
  309.         move.l    #1,OptionIconify
  310.  
  311. DoToolType2:    move.l    DiskObject,a4
  312.         move.l    do_ToolTypes(a4),a0
  313.         lea.l    FROMText1,a1
  314.         lib    Icon,FindToolType
  315.         move.l    d0,FromFile
  316.  
  317.         move.l    DiskObject,a4
  318.         move.l    do_ToolTypes(a4),a0
  319.         lea.l    PUBSCREENText1,a1
  320.         lib    Icon,FindToolType
  321.         move.l    d0,OptPubScreen
  322.  
  323.         move.l    DiskObject,a4
  324.         move.l    do_ToolTypes(a4),a0
  325.         lea.l    CXPOPKEYText1,a1
  326.         lib    Icon,FindToolType
  327.         tst.l    d0
  328.         beq    DoToolType3
  329.         move.l    d0,OptCXPopKey
  330.  
  331. DoToolType3:    move.l    DiskObject,a4
  332.         move.l    do_ToolTypes(a4),a0
  333.         lea.l    CXPOPUPText1,a1
  334.         lib    Icon,FindToolType
  335.         tst.l    d0
  336.         beq    DoToolType4
  337.         move.l    d0,a0
  338.         lea.l    NOText1,a1
  339.         lib    Icon,MatchToolValue
  340.         tst.l    d0
  341.         beq    DoToolType4
  342.         clr.w    PopUp
  343.  
  344. DoToolType4:    move.l    DiskObject,a4
  345.         move.l    do_ToolTypes(a4),a0
  346.         lea.l    CXPRIText1,a1
  347.         lib    Icon,FindToolType
  348.         tst.l    d0
  349.         beq    DoToolType5
  350.         move.l    d0,a0
  351.         bsr    ConvASCII
  352.         tst.l    d0
  353.         beq    DoToolType5
  354.         move.l    d0,WBOptCXPri
  355.         lea.l    WBOptCXPri,a0
  356.         move.l    a0,OptCXPri
  357.  
  358. DoToolType5:    bra    MainStart
  359.  
  360. CLIStart:    lib    Dos,Output
  361.         move.l    d0,_stdout
  362.  
  363.         lea.l    CLTemplate1,a0
  364.         move.l    a0,d1
  365.         lea.l    CLArray1,a0
  366.         move.l    a0,d2
  367.         clr.l    d3
  368.         lib    Dos,ReadArgs
  369.         move.l    d0,RDArgs1
  370.         beq    NoRDArgs
  371.  
  372. ;If 'CXPopUp=No' then something turns VoiceShell on?
  373.  
  374.         move.l    OptCXPopUp,a0
  375.         cmp.l    #0,a0
  376.         beq    MainStart        ;No enforcer hits, please
  377.         cmp.b    #'n',(a0)
  378.         bne    CLIStart1
  379.         clr.w    PopUp
  380. CLIStart1:    cmp.b    #'N',(a0)
  381.         bne    MainStart
  382.         clr.w    PopUp
  383.  
  384. MainStart:    openlib Intuition,NoInt
  385.         openlib    Commodities,NoCommodities
  386.         openlib    Asl,NoAsl
  387.         openlib    Utility,NoUtility
  388.  
  389.         move.l    $4,_SysBase
  390.         move.l    _DosBase,_DOSBase
  391.         move.l    _CommoditiesBase,_CxBase
  392.  
  393.         move.l    OurTask,a1
  394.         move.l    #120,d0
  395.         lib    Exec,SetTaskPri
  396.  
  397.         openlib GadTools,NoGadTools
  398.  
  399. ;Create reply port for timer.device
  400.  
  401.         lib    Exec,CreateMsgPort
  402.         move.l    d0,TRPort
  403.         beq    NoMsgPort
  404.  
  405. ;Create IOReq for timer.device
  406.  
  407.         move.l    #IOTV_SIZE,d0
  408.         move.l    TRPort,a0
  409.         lib    Exec,CreateIORequest
  410.         move.l    d0,TIORequest
  411.         beq    NoIOReq
  412.         move.l    d0,a0
  413.         clr.b    LN_TYPE(a0)        ;Make sure CheckIO doesn't hang
  414.  
  415. ;Open timer.device
  416.  
  417.         lea.l    TimerName,a0
  418.         move.l    TIORequest,a1
  419.         move.l    #UNIT_VBLANK,d0
  420.         clr.l    d1                ;No flags
  421.         lib    Exec,OpenDevice
  422.         tst.l    d0
  423.         bne    NoTimer
  424.         move.w    #$1,TimerOpen            ;Just to tell if open
  425.  
  426.         clr.l    Time
  427.         bsr    Waiter
  428.  
  429. ;Create a message port for the voice.library
  430.  
  431.         lib    Exec,CreateMsgPort
  432.         move.l    d0,VoicePort
  433.         beq    NoMsgPort
  434.  
  435. ;Create a message port for commodities.library (Exchange)
  436.  
  437.         lib    Exec,CreateMsgPort
  438.         move.l    d0,CXPort
  439.         beq    NoMsgPort
  440.         lea.l    NewBroker1,a0
  441.         move.l    d0,nb_Port(a0)
  442.  
  443. ;Get Asl_requester
  444.  
  445.         move.l    #ASL_FileRequest,d0
  446.         lea.l    AslReqTags,a0
  447.         lib    Asl,AllocAslRequest
  448.         move.l    d0,AslReq
  449.         beq    NoAslReq
  450.  
  451. ;Do CX init stuff. Create broker
  452.  
  453.         tst.l    OptCXPri
  454.         beq    SkipSetCXPri
  455.         move.l    OptCXPri,a0
  456.         move.l    (a0),d0
  457.  
  458.         tst.l    d0
  459.         bmi    SetCXPri2
  460.  
  461.         cmp.l    #127,d0
  462.         bhi    BadPriority
  463.         bra    SetCXPri3
  464.  
  465. SetCXPri2:    cmp.l    #-128,d0
  466.         bcs    BadPriority
  467.  
  468. SetCXPri3:    move.b    d0,NBPri
  469. SkipSetCXPri:    lea.l    NewBroker1,a0
  470.         clr.l    d0            ;No extra error codes wanted
  471.         lib    Commodities,CxBroker
  472.         move.l    d0,CXBroker1
  473.         beq    NoCommodity
  474.  
  475. ;Create Filter object
  476.  
  477.         move.l    OptCXPopKey,AboutTxt7.X        ;For about window
  478.  
  479.         move.l    OptCXPopKey,a0
  480.         sub.l    a1,a1
  481.         move.l    #CX_FILTER,d0
  482.         lib    Commodities,CreateCxObj
  483.         move.l    d0,d2
  484.         beq    NoCommodity
  485.  
  486. ;Attach Filter object to Broker
  487.  
  488.         move.l    CXBroker1,a0
  489.         move.l    d2,a1
  490.         lib    Commodities,AttachCxObj
  491.  
  492.         move.l    d2,a0            ;Check if valid descriptor
  493.         lib    Commodities,CxObjError
  494.         cmp.l    #COERR_BADFILTER,d0
  495.         beq    NoFilter
  496.  
  497. ;Create Send object
  498.  
  499.         move.l    d2,d3
  500.         move.l    CXPort,a0
  501.         sub.l    a1,a1
  502.         move.l    #CX_SEND,d0
  503.         lib    Commodities,CreateCxObj
  504.         move.l    d0,d2
  505.         beq    NoCommodity
  506.  
  507. ;Attach Send object to Filter
  508.  
  509.         move.l    d3,a0
  510.         move.l    d2,a1
  511.         lib    Commodities,AttachCxObj
  512.  
  513. ;Create translate object
  514.  
  515.         move.l    d2,d3
  516.         sub.l    a0,a0
  517.         sub.l    a1,a1
  518.         move.l    #CX_TRANSLATE,d0
  519.         lib    Commodities,CreateCxObj
  520.         move.l    d0,d2
  521.         beq    NoCommodity
  522.  
  523. ;Attach Translate object to Send
  524.  
  525.         move.l    d3,a0
  526.         move.l    d2,a1
  527.         lib    Commodities,AttachCxObj
  528.  
  529. ;We open voice.library this late so that if we're already run the older
  530. ;copy pops up
  531.  
  532.         move.l    #8,d0
  533.         move.l    $4,a6
  534.         lea.l    _VoiceLib,a1
  535.         jsr    _LVOOpenLibrary(a6)
  536.         move.l    d0,_VoiceBase
  537.         beq    NoVoice
  538.  
  539. ;The same thing with the ARexx port...
  540.  
  541. ;Check to see if a port with our name already exists
  542.  
  543.         lib    Exec,Forbid
  544.         lea.l    ARexxPortName,a1
  545.         flib    Exec,FindPort
  546.         push    d0
  547.         flib    Exec,Permit
  548.  
  549.         pull    d0
  550.         tst.l    d0
  551.         bne    NoMsgPort2
  552.  
  553. ;Create AREXX message port
  554.  
  555.         lib    Exec,CreateMsgPort
  556.         move.l    d0,ARexxPort
  557.         beq    NoMsgPort
  558.  
  559.         move.l    ARexxPort,a1
  560.         lea.l    ARexxPortName,a0
  561.         move.l    a0,LN_NAME(a1)
  562.         lib    Exec,AddPort
  563.  
  564. ;Read preferences
  565.  
  566.         bsr    Load        ;Set voice stuff
  567.  
  568.         bsr    CXDisable    ;Turn off just in case
  569.  
  570.         tst.w    PopUp
  571.         beq    SkipOpen1
  572.  
  573.         bsr    OpenWin1
  574.         tst.l    Window1
  575.         beq    NoWindow1
  576.  
  577.         bsr    SetModes    ;Set gads/menus
  578.  
  579. SkipOpen1:    move.l    #5625242,d5    ;inform user
  580.         bsr    AddVTask
  581.  
  582. Window1IDCMP:    move.l    Window1,a0
  583.         bsr    CheckIDCMP
  584.         tst.l    d0            ;Test for CTRL_C
  585.         beq    ShutDown
  586.         cmp.l    #1,d0            ;Test for CTRL_D
  587.         beq    DoCTRL_D
  588.         cmp.l    #2,d0            ;Test for CTRL_E
  589.         beq    DoCTRL_E
  590.         cmp.l    #3,d0
  591.         beq    DoVoice            ;Do voice command
  592.         cmp.l    #4,d0
  593.         beq    Window1IDCMP        ;Already done ARexx or commodity
  594.         cmp.l    #INTUITICKS,d2
  595.         beq    DoTicks
  596.         cmp.l    #GADGETUP,d2
  597.         beq    DoGads
  598.         cmp.l    #CLOSEWINDOW,d2
  599.         beq    DoDoCXDisappear
  600.         cmp.l    #MENUPICK,d2
  601.         beq    Win1Menus
  602.         cmp.l    #VANILLAKEY,d2
  603.         beq    VanillaKeys
  604.         cmp.l    #ACTIVEWINDOW,d2
  605.         beq    ActivateGads
  606.         cmp.l    #REFRESHWINDOW,d2
  607.         beq    Refresher
  608.         bra    Window1IDCMP
  609.  
  610. Refresher:    tst.l    Window1
  611.         beq    Refresher_OUT
  612.         move.l    Window1,a0
  613.         lib    GadTools,GT_BeginRefresh
  614.         move.l    Window1,a0
  615.         move.l    #TRUE,d0
  616.         lib    GadTools,GT_EndRefresh
  617. Refresher_OUT:    bra    Window1IDCMP
  618.  
  619. VanillaKeys:    cmp.w    #$1b,d3
  620.         beq    Quit
  621.         cmp.w    #'l',d3            ;Lower case
  622.         beq    DoDataLoad
  623.         cmp.w    #'s',d3
  624.         beq    Save
  625.         cmp.w    #'q',d3
  626.         beq    Quit
  627.         cmp.w    #'u',d3
  628.         beq    DoGainUp
  629.         cmp.w    #'d',d3
  630.         beq    DoGainDown
  631.         cmp.w    #'f',d3
  632.         beq    ActivateGads
  633.         cmp.w    #'L',d3            ;Upper case
  634.         beq    DoDataLoad
  635.         cmp.w    #'S',d3
  636.         beq    Save
  637.         cmp.w    #'Q',d3
  638.         beq    Quit
  639.         cmp.w    #'U',d3
  640.         beq    DoGainUp
  641.         cmp.w    #'D',d3
  642.         beq    DoGainDown
  643.         cmp.w    #'F',d3
  644.         beq    ActivateGads
  645.         bra    Window1IDCMP
  646.  
  647. DoGads:        cmp.w    #10,$26(a5)
  648.         beq    DoOnOff
  649.         cmp.w    #1,$26(a5)
  650.         beq    ActivateGads
  651.         cmp.w    #20,$26(a5)
  652.         beq    DoGainUp
  653.         cmp.w    #30,$26(a5)
  654.         beq    DoGainDown
  655.         cmp.w    #40,$26(a5)
  656.         beq    DoDataLoad
  657.         cmp.w    #98,$26(a5)
  658.         beq    Save
  659.         cmp.w    #99,$26(a5)
  660.         beq    Quit
  661.         bra    Window1IDCMP
  662.  
  663. Win1Menus:    bsr    MenuNull
  664.         cmp.w    #$00,d6
  665.         beq    Win1Menus1
  666.         cmp.w    #$01,d6
  667.         beq    Win1Menus2
  668.         cmp.w    #$02,d6
  669.         beq    Win1Menus3
  670.         bra    Window1IDCMP
  671. Win1Menus1:    cmp.w    #$00,d5
  672.         beq    DoLoad
  673.         cmp.w    #$01,d5
  674.         beq    Save
  675.         cmp.w    #$02,d5
  676.         beq    About
  677.         cmp.w    #$04,d5
  678.         beq    Quit
  679.         bra    Window1IDCMP
  680. Win1Menus2:    cmp.w    #$00,d5
  681.         beq    EditCmds
  682.         cmp.w    #$01,d5
  683.         beq    ErrorCmds
  684.         bra    Window1IDCMP
  685. Win1Menus3:    cmp.w    #$00,d5
  686.         beq    Win1Menus3.1
  687.         cmp.w    #$01,d5
  688.         beq    Win1Menus3.2
  689.         cmp.w    #$02,d5
  690.         beq    Win1Menus3.3
  691.         cmp.w    #$03,d5
  692.         beq    Win1Menus3.4
  693.         cmp.w    #$04,d5
  694.         beq    Win1Menus3.5
  695.         cmp.w    #$05,d5
  696.         beq    Win1Menus3.6
  697.         cmp.w    #$06,d5
  698.         beq    Win1Menus3.7
  699.         cmp.w    #$07,d5
  700.         beq    SetPriority
  701.         cmp.w    #$08,d5
  702.         beq    DoConfirm
  703.         bra    Window1IDCMP
  704. Win1Menus3.1:    cmp.w    #$00,d4
  705.         beq    DoSetSamp1
  706.         cmp.w    #$01,d4
  707.         beq    DoSetSamp2
  708.         cmp.w    #$02,d4
  709.         beq    DoSetSamp3
  710.         cmp.w    #$03,d4
  711.         beq    DoSetSamp4
  712.         bra    Window1IDCMP
  713. Win1Menus3.2:    cmp.w    #$00,d4
  714.         beq    DoSetResLo
  715.         cmp.w    #$01,d4
  716.         beq    DoSetResHi
  717. Win1Menus3.3:    cmp.w    #$00,d4
  718.         beq    DoSetAccLowest
  719.         cmp.w    #$01,d4
  720.         beq    DoSetAccLower
  721.         cmp.w    #$02,d4
  722.         beq    DoSetAccLow
  723.         cmp.w    #$03,d4
  724.         beq    DoSetAccNormal
  725.         cmp.w    #$04,d4
  726.         beq    DoSetAccHigh
  727.         cmp.w    #$05,d4
  728.         beq    DoSetAccHigher
  729.         cmp.w    #$06,d4
  730.         beq    DoSetAccEHigher
  731.         cmp.w    #$07,d4
  732.         beq    DoSetAccMaximum
  733. Win1Menus3.4:    cmp.w    #$00,d4
  734.         beq    DoSetLeft
  735.         cmp.w    #$01,d4
  736.         beq    DoSetRight
  737. Win1Menus3.5:    cmp.w    #$00,d4
  738.         beq    DoSetMic
  739.         cmp.w    #$01,d4
  740.         beq    DoSetLine
  741. Win1Menus3.6:    cmp.w    #$00,d4
  742.         beq    DoSetTimerA
  743.         cmp.w    #$01,d4
  744.         beq    DoSetTimerB
  745.         bra    Window1IDCMP
  746. Win1Menus3.7:    cmp.w    #$00,d4
  747.         beq    DoSetWake0
  748.         cmp.w    #$01,d4
  749.         beq    DoSetWake5
  750.         cmp.w    #$02,d4
  751.         beq    DoSetWake10
  752.         cmp.w    #$03,d4
  753.         beq    DoSetWake15
  754.         cmp.w    #$04,d4
  755.         beq    DoSetWake20
  756.         bra    Window1IDCMP
  757.  
  758. DoTicks:    add.w    #1,TickCount
  759.         cmp.w    #20,TickCount
  760.         bne    Window1IDCMP
  761.         clr.w    TickCount
  762.         tst.w    TaskOn
  763.         beq    DoTicks2
  764.         lea.l    ReadyText1,a0
  765.         bsr    GetLength
  766.         bsr    Inform
  767.         bra    Window1IDCMP
  768. DoTicks2:    lea.l    InactiveText1,a0
  769.         bsr    GetLength
  770.         bsr    Inform
  771.         bra    Window1IDCMP
  772.  
  773. EditCmds:    clr.w    Saved
  774.         move.w    #1,DisActive        ;Can't turn on/off
  775.         bsr    RemVTask1
  776.         bsr    SleepPointer
  777.         bsr    MenusOff
  778.         bsr    RemGads
  779.  
  780.         bsr    OpenWin2
  781.         tst.l    d0
  782.         beq    NoWindow1
  783.         bsr    RemGads2
  784.         bsr    SetStrGads
  785.         bsr    AddGads2
  786.  
  787.         bsr    ActGad2
  788.  
  789. Window2IDCMP:    move.l    Window2,a0
  790.         bsr    CheckIDCMP
  791.  
  792.         tst.l    d0
  793.         beq    ShutDown
  794.         cmp.l    #4,d0
  795.         beq    Window2IDCMP
  796.         cmp.l    #GADGETUP,d2
  797.         beq    ActivateGads2
  798.         cmp.l    #GADGETDOWN,d2
  799.         beq    GetGadAddr2
  800.         cmp.l    #CLOSEWINDOW,d2
  801.         beq    EditCmds_OUT
  802.         cmp.l    #MENUPICK,d2
  803.         beq    Win2Menus
  804.         cmp.l    #VANILLAKEY,d2
  805.         beq    EditKeys
  806.         cmp.l    #REFRESHWINDOW,d2
  807.         beq    Refresher2
  808.         bra    Window2IDCMP
  809.  
  810. Refresher2:    move.l    Window2,a0
  811.         lib    GadTools,GT_BeginRefresh
  812.         move.l    Window2,a0
  813.         move.l    #TRUE,d0
  814.         lib    GadTools,GT_EndRefresh
  815.         bra    Window2IDCMP
  816.  
  817. Win2Menus:    bsr    MenuNull
  818.         cmp.w    #$00,d6
  819.         beq    Win2Menus1
  820.         bra    Window2IDCMP
  821. Win2Menus1:    cmp.w    #$00,d5
  822.         beq    DoPage1
  823.         cmp.w    #$01,d5
  824.         beq    DoPage2
  825.         cmp.w    #$02,d5
  826.         beq    DoPage3
  827.         cmp.w    #$03,d5
  828.         beq    DoPage4
  829.         cmp.w    #$04,d5
  830.         beq    DoPage5
  831.         cmp.w    #$05,d5
  832.         beq    DoPage6
  833.         cmp.w    #$07,d5
  834.         beq    EditCmds_OUT
  835.         bra    Window2IDCMP
  836.  
  837. DoPage1:    bsr    SaveStrGads
  838.         bsr    RemGads2
  839.         move.w    #0,Page
  840.         bsr    SetStrGads
  841.         bsr    AddGads2
  842.         bra    Window2IDCMP
  843.  
  844. DoPage2:    bsr    SaveStrGads
  845.         bsr    RemGads2
  846.         move.w    #1,Page
  847.         bsr    SetStrGads
  848.         bsr    AddGads2
  849.         bsr    ActGad2
  850.         bra    Window2IDCMP
  851.  
  852. DoPage3:    bsr    SaveStrGads
  853.         bsr    RemGads2
  854.         move.w    #2,Page
  855.         bsr    SetStrGads
  856.         bsr    AddGads2
  857.         bsr    ActGad2
  858.         bra    Window2IDCMP
  859.  
  860. DoPage4:    bsr    SaveStrGads
  861.         bsr    RemGads2
  862.         move.w    #3,Page
  863.         bsr    SetStrGads
  864.         bsr    AddGads2
  865.         bsr    ActGad2
  866.         bra    Window2IDCMP
  867.  
  868. DoPage5:    bsr    SaveStrGads
  869.         bsr    RemGads2
  870.         move.w    #4,Page
  871.         bsr    SetStrGads
  872.         bsr    AddGads2
  873.         bsr    ActGad2
  874.         bra    Window2IDCMP
  875.  
  876. DoPage6:    bsr    SaveStrGads
  877.         bsr    RemGads2
  878.         move.w    #5,Page
  879.         bsr    SetStrGads
  880.         bsr    AddGads2
  881.         bsr    ActGad2
  882.         bra    Window2IDCMP
  883.  
  884. SaveStrGads:    lea.l    CmdList,a2
  885.         move.w    Page,d0
  886.         mulu.w    #NUMGADS*GADLENGTH,d0
  887.         add.l    d0,a2            ;a2=start of strings
  888.  
  889.         move.l    StrGadBuf1,a0
  890.         move.l    a2,a1
  891.         move.l    #GADLENG1,d0
  892.         add.l    d0,a2
  893.         lib    Exec,CopyMem
  894.  
  895.         move.l    StrGadBuf2,a0
  896.         move.l    a2,a1
  897.         move.l    #GADLENG2,d0
  898.         add.l    d0,a2
  899.         lib    Exec,CopyMem
  900.  
  901.         move.l    StrGadBuf3,a0
  902.         move.l    a2,a1
  903.         move.l    #GADLENG1,d0
  904.         add.l    d0,a2
  905.         lib    Exec,CopyMem
  906.  
  907.         move.l    StrGadBuf4,a0
  908.         move.l    a2,a1
  909.         move.l    #GADLENG2,d0
  910.         add.l    d0,a2
  911.         lib    Exec,CopyMem
  912.  
  913.         move.l    StrGadBuf5,a0
  914.         move.l    a2,a1
  915.         move.l    #GADLENG1,d0
  916.         add.l    d0,a2
  917.         lib    Exec,CopyMem
  918.  
  919.         move.l    StrGadBuf6,a0
  920.         move.l    a2,a1
  921.         move.l    #GADLENG2,d0
  922.         add.l    d0,a2
  923.         lib    Exec,CopyMem
  924.  
  925.         move.l    StrGadBuf7,a0
  926.         move.l    a2,a1
  927.         move.l    #GADLENG1,d0
  928.         add.l    d0,a2
  929.         lib    Exec,CopyMem
  930.  
  931.         move.l    StrGadBuf8,a0
  932.         move.l    a2,a1
  933.         move.l    #GADLENG2,d0
  934.         add.l    d0,a2
  935.         lib    Exec,CopyMem
  936.  
  937.         move.l    StrGadBuf9,a0
  938.         move.l    a2,a1
  939.         move.l    #GADLENG1,d0
  940.         add.l    d0,a2
  941.         lib    Exec,CopyMem
  942.  
  943.         move.l    StrGadBuf10,a0
  944.         move.l    a2,a1
  945.         move.l    #GADLENG2,d0
  946.         add.l    d0,a2
  947.         lib    Exec,CopyMem
  948.  
  949.         move.l    StrGadBuf11,a0
  950.         move.l    a2,a1
  951.         move.l    #GADLENG1,d0
  952.         add.l    d0,a2
  953.         lib    Exec,CopyMem
  954.  
  955.         move.l    StrGadBuf12,a0
  956.         move.l    a2,a1
  957.         move.l    #GADLENG2,d0
  958.         add.l    d0,a2
  959.         lib    Exec,CopyMem
  960.  
  961.         move.l    StrGadBuf13,a0
  962.         move.l    a2,a1
  963.         move.l    #GADLENG1,d0
  964.         add.l    d0,a2
  965.         lib    Exec,CopyMem
  966.  
  967.         move.l    StrGadBuf14,a0
  968.         move.l    a2,a1
  969.         move.l    #GADLENG2,d0
  970.         add.l    d0,a2
  971.         lib    Exec,CopyMem
  972.  
  973.         move.l    StrGadBuf15,a0
  974.         move.l    a2,a1
  975.         move.l    #GADLENG1,d0
  976.         add.l    d0,a2
  977.         lib    Exec,CopyMem
  978.  
  979.         move.l    StrGadBuf16,a0
  980.         move.l    a2,a1
  981.         move.l    #GADLENG2,d0
  982.         add.l    d0,a2
  983.         lib    Exec,CopyMem
  984.  
  985.         move.l    StrGadBuf17,a0
  986.         move.l    a2,a1
  987.         move.l    #GADLENG1,d0
  988.         add.l    d0,a2
  989.         lib    Exec,CopyMem
  990.  
  991.         move.l    StrGadBuf18,a0
  992.         move.l    a2,a1
  993.         move.l    #GADLENG2,d0
  994.         add.l    d0,a2
  995.         lib    Exec,CopyMem
  996.  
  997.         move.l    StrGadBuf19,a0
  998.         move.l    a2,a1
  999.         move.l    #GADLENG1,d0
  1000.         add.l    d0,a2
  1001.         lib    Exec,CopyMem
  1002.  
  1003.         move.l    StrGadBuf20,a0
  1004.         move.l    a2,a1
  1005.         move.l    #GADLENG2,d0
  1006.         add.l    d0,a2
  1007.         lib    Exec,CopyMem
  1008.         rts
  1009.  
  1010. SetStrGads:    lea.l    CmdList,a2
  1011.         move.w    Page,d0
  1012.         mulu.w    #NUMGADS*GADLENGTH,d0
  1013.         add.l    d0,a2            ;a2=start of strings
  1014.  
  1015.         move.l    a2,a0
  1016.         move.l    StrGadBuf1,a1
  1017.         move.l    #GADLENG1,d0
  1018.         add.l    d0,a2
  1019.         lib    Exec,CopyMem
  1020.  
  1021.         move.l    a2,a0
  1022.         move.l    StrGadBuf2,a1
  1023.         move.l    #GADLENG2,d0
  1024.         add.l    d0,a2
  1025.         lib    Exec,CopyMem
  1026.  
  1027.         move.l    a2,a0
  1028.         move.l    StrGadBuf3,a1
  1029.         move.l    #GADLENG1,d0
  1030.         add.l    d0,a2
  1031.         lib    Exec,CopyMem
  1032.  
  1033.         move.l    a2,a0
  1034.         move.l    StrGadBuf4,a1
  1035.         move.l    #GADLENG2,d0
  1036.         add.l    d0,a2
  1037.         lib    Exec,CopyMem
  1038.  
  1039.         move.l    a2,a0
  1040.         move.l    StrGadBuf5,a1
  1041.         move.l    #GADLENG1,d0
  1042.         add.l    d0,a2
  1043.         lib    Exec,CopyMem
  1044.  
  1045.         move.l    a2,a0
  1046.         move.l    StrGadBuf6,a1
  1047.         move.l    #GADLENG2,d0
  1048.         add.l    d0,a2
  1049.         lib    Exec,CopyMem
  1050.  
  1051.         move.l    a2,a0
  1052.         move.l    StrGadBuf7,a1
  1053.         move.l    #GADLENG1,d0
  1054.         add.l    d0,a2
  1055.         lib    Exec,CopyMem
  1056.  
  1057.         move.l    a2,a0
  1058.         move.l    StrGadBuf8,a1
  1059.         move.l    #GADLENG2,d0
  1060.         add.l    d0,a2
  1061.         lib    Exec,CopyMem
  1062.  
  1063.         move.l    a2,a0
  1064.         move.l    StrGadBuf9,a1
  1065.         move.l    #GADLENG1,d0
  1066.         add.l    d0,a2
  1067.         lib    Exec,CopyMem
  1068.  
  1069.         move.l    a2,a0
  1070.         move.l    StrGadBuf10,a1
  1071.         move.l    #GADLENG2,d0
  1072.         add.l    d0,a2
  1073.         lib    Exec,CopyMem
  1074.  
  1075.         move.l    a2,a0
  1076.         move.l    StrGadBuf11,a1
  1077.         move.l    #GADLENG1,d0
  1078.         add.l    d0,a2
  1079.         lib    Exec,CopyMem
  1080.  
  1081.         move.l    a2,a0
  1082.         move.l    StrGadBuf12,a1
  1083.         move.l    #GADLENG2,d0
  1084.         add.l    d0,a2
  1085.         lib    Exec,CopyMem
  1086.  
  1087.         move.l    a2,a0
  1088.         move.l    StrGadBuf13,a1
  1089.         move.l    #GADLENG1,d0
  1090.         add.l    d0,a2
  1091.         lib    Exec,CopyMem
  1092.  
  1093.         move.l    a2,a0
  1094.         move.l    StrGadBuf14,a1
  1095.         move.l    #GADLENG2,d0
  1096.         add.l    d0,a2
  1097.         lib    Exec,CopyMem
  1098.  
  1099.         move.l    a2,a0
  1100.         move.l    StrGadBuf15,a1
  1101.         move.l    #GADLENG1,d0
  1102.         add.l    d0,a2
  1103.         lib    Exec,CopyMem
  1104.  
  1105.         move.l    a2,a0
  1106.         move.l    StrGadBuf16,a1
  1107.         move.l    #GADLENG2,d0
  1108.         add.l    d0,a2
  1109.         lib    Exec,CopyMem
  1110.  
  1111.         move.l    a2,a0
  1112.         move.l    StrGadBuf17,a1
  1113.         move.l    #GADLENG1,d0
  1114.         add.l    d0,a2
  1115.         lib    Exec,CopyMem
  1116.  
  1117.         move.l    a2,a0
  1118.         move.l    StrGadBuf18,a1
  1119.         move.l    #GADLENG2,d0
  1120.         add.l    d0,a2
  1121.         lib    Exec,CopyMem
  1122.  
  1123.         move.l    a2,a0
  1124.         move.l    StrGadBuf19,a1
  1125.         move.l    #GADLENG1,d0
  1126.         add.l    d0,a2
  1127.         lib    Exec,CopyMem
  1128.  
  1129.         move.l    a2,a0
  1130.         move.l    StrGadBuf20,a1
  1131.         move.l    #GADLENG2,d0
  1132.         add.l    d0,a2
  1133.         lib    Exec,CopyMem
  1134.         rts
  1135.  
  1136. EditCmds_OUT:    bsr    SaveStrGads
  1137.         bsr    AddVTask
  1138.         bsr    CloseWin2
  1139.         clr.w    DisActive    ;Can turn on/off
  1140.         bsr    AddGads
  1141.         bsr    MenusOn
  1142.         bsr    NormalPointer
  1143.         bra    Window1IDCMP
  1144.  
  1145. EditKeys:    cmp.w    #$1b,d3
  1146.         beq    EditCmds_OUT
  1147.         cmp.w    #'g',d3
  1148.         beq    Get
  1149.         cmp.w    #'G',d3
  1150.         beq    Get
  1151.         bra    Window2IDCMP
  1152.  
  1153. GetGadAddr2:    cmp.w    #2,$26(a5)
  1154.         beq    GetGadAddr2.1
  1155.         clr.l    LastGad
  1156.         move.l    GetGad1,a0
  1157.         move.l    Window2,a1
  1158.         sub.l    a2,a2
  1159.         lea.l    DisabledTags,a3
  1160.         lib    GadTools,GT_SetGadgetAttrsA
  1161.         bra    Window2IDCMP
  1162. GetGadAddr2.1:    move.l    a5,LastGad
  1163.         move.l    GetGad1,a0
  1164.         move.l    Window2,a1
  1165.         sub.l    a2,a2
  1166.         lea.l    EnabledTags,a3
  1167.         lib    GadTools,GT_SetGadgetAttrsA
  1168.         bra    Window2IDCMP
  1169.  
  1170. Get:        tst.l    LastGad
  1171.         beq    Get1_OUT2
  1172.  
  1173.         move.l    AslReq,a0
  1174.         lea.l    GetReqTags,a1
  1175.         lib    Asl,AslRequest
  1176.         tst.l    d0
  1177.         beq    Get1_OUT1
  1178.  
  1179.         bsr    RemGads2
  1180.         move.l    LastGad,a5
  1181.         bsr    MakeCmd
  1182.         bsr    AddGads2
  1183.  
  1184. Get1_OUT1:    move.l    LastGad,a0
  1185.         move.l    Window2,a1
  1186.         sub.l    a2,a2
  1187.         lib    Intuition,ActivateGadget
  1188.  
  1189. Get1_OUT2:    bra    Window2IDCMP
  1190.  
  1191. SetPriority:    move.w    #1,DisActive        ;Can't turn on/off
  1192.         bsr    RemVTask1
  1193.         bsr    SleepPointer
  1194.         bsr    MenusOff
  1195.         bsr    RemGads
  1196.  
  1197.         bsr    OpenWin3
  1198.         tst.l    d0
  1199.         beq    NoWindow1
  1200.  
  1201. Window3IDCMP:    move.l    Window3,a0
  1202.         bsr    CheckIDCMP
  1203.  
  1204.         tst.l    d0
  1205.         beq    ShutDown
  1206.         cmp.l    #4,d0
  1207.         beq    Window3IDCMP
  1208.         cmp.l    #GADGETUP,d2
  1209.         beq    SetPriority2
  1210.         cmp.l    #CLOSEWINDOW,d2
  1211.         beq    SetPri_OUT
  1212.         cmp.l    #VANILLAKEY,d2
  1213.         beq    SetPriKeys
  1214.         cmp.l    #ACTIVEWINDOW,d2
  1215.         beq    GoActGads3
  1216.         cmp.l    #REFRESHWINDOW,d2
  1217.         beq    Refresher3
  1218.         bra    Window3IDCMP
  1219.  
  1220. Refresher3:    move.l    Window3,a0
  1221.         lib    GadTools,GT_BeginRefresh
  1222.         move.l    Window3,a0
  1223.         move.l    #TRUE,d0
  1224.         lib    GadTools,GT_EndRefresh
  1225.         bra    Window3IDCMP
  1226.  
  1227. SetPriority2:    move.l    StrGadInt21,a0
  1228.         move.l    (a0),d0
  1229.  
  1230.         tst.l    d0
  1231.         bmi    SetPriority2.1
  1232.  
  1233.         cmp.l    #127,d0
  1234.         bhi    SetPriority3
  1235.  
  1236.         move.l    d0,PrefsPriority
  1237.         bra    SetPri_OUT
  1238.  
  1239. SetPriority2.1:    cmp.l    #-128,d0
  1240.         bcs    SetPriority3
  1241.  
  1242.         move.l    d0,PrefsPriority
  1243.         bra    SetPri_OUT
  1244.  
  1245. SetPriority3:    sub.l    a0,a0
  1246.         lib    Intuition,DisplayBeep
  1247.  
  1248.         move.l    StrGad21,a0
  1249.         move.l    Window3,a1
  1250.         sub.l    a2,a2
  1251.         lea.l    StrGadTagList3,a3
  1252.         lib    GadTools,GT_SetGadgetAttrsA
  1253.         bra    GoActGads3
  1254.  
  1255. SetPri_OUT:    bsr    CloseWin3
  1256.         bsr    AddVTask
  1257.         clr.w    DisActive        ;Can turn on/off
  1258.         bsr    AddGads
  1259.         bsr    MenusOn
  1260.         bsr    NormalPointer
  1261.         bra    Window1IDCMP
  1262.  
  1263. GoActGads3:    bsr    ActGad3
  1264.         bra    Window3IDCMP
  1265.  
  1266. SetPriKeys:    cmp.w    #$1b,d3
  1267.         beq    SetPri_OUT
  1268.         bra    Window3IDCMP
  1269.  
  1270. ErrorCmds:    clr.w    Saved
  1271.         move.w    #1,DisActive        ;Can't turn on/off
  1272.         bsr    RemVTask1
  1273.         bsr    SleepPointer
  1274.         bsr    MenusOff
  1275.         bsr    RemGads
  1276.  
  1277.         bsr    OpenWin4
  1278.         tst.l    d0
  1279.         beq    NoWindow1
  1280.  
  1281. ;Move data from prefs to window
  1282.  
  1283.         bsr    RemGads4
  1284.         bsr    SetStrGads2
  1285.         bsr    AddGads4
  1286.  
  1287.         bsr    ActGad4
  1288.  
  1289. Window4IDCMP:    move.l    Window4,a0
  1290.         bsr    CheckIDCMP
  1291.  
  1292.         tst.l    d0
  1293.         beq    ShutDown
  1294.         cmp.l    #4,d0
  1295.         beq    Window4IDCMP
  1296.         cmp.l    #GADGETDOWN,d2
  1297.         beq    GetGadAddr4
  1298.         cmp.l    #GADGETUP,d2
  1299.         beq    ActivateGads4
  1300.         cmp.l    #CLOSEWINDOW,d2
  1301.         beq    ErrorCmds_OUT
  1302.         cmp.l    #VANILLAKEY,d2
  1303.         beq    ErrorKeys
  1304.         cmp.l    #REFRESHWINDOW,d2
  1305.         beq    Refresher4
  1306.         bra    Window4IDCMP
  1307.  
  1308. Refresher4:    move.l    Window4,a0
  1309.         lib    GadTools,GT_BeginRefresh
  1310.         move.l    Window2,a0
  1311.         move.l    #TRUE,d0
  1312.         lib    GadTools,GT_EndRefresh
  1313.         bra    Window4IDCMP
  1314.  
  1315. SaveStrGads2:    move.l    StrGadBuf22,a0
  1316.         lea.l    ErrCmd1,a1
  1317.         move.l    #GADLENG2,d0
  1318.         lib    Exec,CopyMem
  1319.  
  1320.         move.l    StrGadBuf23,a0
  1321.         lea.l    ErrCmd2,a1
  1322.         move.l    #GADLENG2,d0
  1323.         flib    Exec,CopyMem
  1324.  
  1325.         move.l    StrGadBuf24,a0
  1326.         lea.l    ErrCmd3,a1
  1327.         move.l    #GADLENG2,d0
  1328.         flib    Exec,CopyMem
  1329.  
  1330.         move.l    StrGadBuf25,a0
  1331.         lea.l    ErrCmd4,a1
  1332.         move.l    #GADLENG2,d0
  1333.         flib    Exec,CopyMem
  1334.  
  1335.         move.l    StrGadBuf26,a0
  1336.         lea.l    ErrCmd5,a1
  1337.         move.l    #GADLENG2,d0
  1338.         flib    Exec,CopyMem
  1339.  
  1340.         move.l    StrGadBuf27,a0
  1341.         lea.l    ErrCmd6,a1
  1342.         move.l    #GADLENG2,d0
  1343.         flib    Exec,CopyMem
  1344.  
  1345.         move.l    StrGadBuf28,a0
  1346.         lea.l    ConfCmd1,a1
  1347.         move.l    #GADLENG2,d0
  1348.         flib    Exec,CopyMem
  1349.  
  1350.         move.l    StrGadBuf29,a0
  1351.         lea.l    ConfCmd2,a1
  1352.         move.l    #GADLENG2,d0
  1353.         flib    Exec,CopyMem
  1354.  
  1355.         move.l    StrGadBuf30,a0
  1356.         lea.l    WakeCmd1,a1
  1357.         move.l    #GADLENG2,d0
  1358.         flib    Exec,CopyMem
  1359.  
  1360.         rts
  1361.  
  1362. SetStrGads2:    lea.l    ErrCmd1,a0
  1363.         move.l    StrGadBuf22,a1
  1364.         move.l    #GADLENG2,d0
  1365.         lib    Exec,CopyMem
  1366.  
  1367.         lea.l    ErrCmd2,a0
  1368.         move.l    StrGadBuf23,a1
  1369.         move.l    #GADLENG2,d0
  1370.         flib    Exec,CopyMem
  1371.  
  1372.         lea.l    ErrCmd3,a0
  1373.         move.l    StrGadBuf24,a1
  1374.         move.l    #GADLENG2,d0
  1375.         flib    Exec,CopyMem
  1376.  
  1377.         lea.l    ErrCmd4,a0
  1378.         move.l    StrGadBuf25,a1
  1379.         move.l    #GADLENG2,d0
  1380.         flib    Exec,CopyMem
  1381.  
  1382.         lea.l    ErrCmd5,a0
  1383.         move.l    StrGadBuf26,a1
  1384.         move.l    #GADLENG2,d0
  1385.         flib    Exec,CopyMem
  1386.  
  1387.         lea.l    ErrCmd6,a0
  1388.         move.l    StrGadBuf27,a1
  1389.         move.l    #GADLENG2,d0
  1390.         flib    Exec,CopyMem
  1391.  
  1392.         lea.l    ConfCmd1,a0
  1393.         move.l    StrGadBuf28,a1
  1394.         move.l    #GADLENG2,d0
  1395.         flib    Exec,CopyMem
  1396.  
  1397.         lea.l    ConfCmd2,a0
  1398.         move.l    StrGadBuf29,a1
  1399.         move.l    #GADLENG2,d0
  1400.         flib    Exec,CopyMem
  1401.  
  1402.         lea.l    WakeCmd1,a0
  1403.         move.l    StrGadBuf30,a1
  1404.         move.l    #GADLENG2,d0
  1405.         flib    Exec,CopyMem
  1406.         rts
  1407.  
  1408. ErrorKeys:    cmp.w    #$1b,d3
  1409.         beq    ErrorCmds_OUT
  1410.         cmp.w    #'g',d3
  1411.         beq    Get2
  1412.         cmp.w    #'G',d3
  1413.         beq    Get2
  1414.         bra    Window4IDCMP
  1415.  
  1416. GetGadAddr4:    cmp.w    #2,$26(a5)
  1417.         beq    GetGadAddr4.1
  1418.         clr.l    LastGad2
  1419.         bra    Window4IDCMP
  1420. GetGadAddr4.1:    move.l    a5,LastGad2
  1421.         bra    Window4IDCMP
  1422.  
  1423. Get2:        tst.l    LastGad2
  1424.         beq    Get2_OUT2
  1425.  
  1426.         move.l    AslReq,a0
  1427.         lea.l    GetReqTags,a1
  1428.         lib    Asl,AslRequest
  1429.         tst.l    d0
  1430.         beq    Get2_OUT1
  1431.  
  1432.         bsr    RemGads4
  1433.         move.l    LastGad2,a5
  1434.         bsr    MakeCmd
  1435.         bsr    AddGads4
  1436.  
  1437. Get2_OUT1:    move.l    LastGad2,a0
  1438.         move.l    Window4,a1
  1439.         sub.l    a2,a2
  1440.         lib    Intuition,ActivateGadget
  1441.  
  1442. Get2_OUT2:    bra    Window4IDCMP
  1443.  
  1444. ErrorCmds_OUT:    bsr    SaveStrGads2
  1445.         bsr    AddVTask
  1446.         bsr    CloseWin4
  1447.         clr.w    DisActive    ;Can turn on/off
  1448.         bsr    AddGads
  1449.         bsr    MenusOn
  1450.         bsr    NormalPointer
  1451.         bra    Window1IDCMP
  1452.  
  1453. DoVoice:    cmp.w    #-2,d3
  1454.         beq    VoiceClip
  1455.         cmp.w    #-3,d3
  1456.         beq    VoiceLow
  1457.         cmp.w    #-4,d3
  1458.         beq    VoiceNoisy
  1459.  
  1460.         cmp.w    PrefsScore,a4
  1461.         bcs    VoiceUnknown
  1462.  
  1463.         lea.l    CmdList,a2
  1464.         move.w    d3,d0
  1465.         mulu.w    #GADLENGTH,d0
  1466.         add.l    d0,a2            ;a2 was start of strings
  1467.  
  1468. ;Test wake up
  1469.  
  1470.         tst.b    PrefsWake
  1471.         beq    CheckConf
  1472.  
  1473.         tst.w    Awake            ;Already awake
  1474.         bne    CheckConf
  1475.  
  1476.         tst.w    d3            ;Test for first command
  1477.         bne    Window1IDCMP        ;Not wake up command
  1478.  
  1479.         move.w    #1,Awake        ;We are awake
  1480.         bsr    ClearTimer
  1481.         clr.l    d0
  1482.         move.b    PrefsWake,d0
  1483.         move.l    d0,Time
  1484.         bsr    Waiter
  1485.         lea.l    AwakeText1,a0        ;Inform and execute
  1486.         bsr    GetLength
  1487.         bsr    Inform
  1488.         lea.l    WakeCmd1,a2
  1489.         tst.b    (a2)
  1490.         beq    CheckWake2
  1491.         bsr    ExecuteCmd
  1492.         cmp.l    #-1,d0
  1493.         beq    DoVoice3
  1494. CheckWake2:    clr.w    TickCount
  1495.         bra    Window1IDCMP
  1496.  
  1497. ;Test confirm
  1498.  
  1499. CheckConf:    cmp.w    #-1,d3            ;Test this after
  1500.         beq    VoiceUnknown        ;awake command!
  1501.  
  1502.         tst.b    PrefsConfirm
  1503.         beq    DoVoice1        ;Don't confirm
  1504.  
  1505.         tst.l    ConfAddress        ;Nothing to compare with
  1506.         beq    CheckConf3
  1507.  
  1508.         cmp.l    ConfAddress,a2        ;Is it same?
  1509.         beq    DoVoice1        ;Yes, execute
  1510.  
  1511.         clr.l    ConfAddress        ;No, clear previous
  1512.         lea.l    NoConfText1,a0        ;Not confirmed, inform
  1513.         bsr    GetLength        ;and execute
  1514.         bsr    Inform
  1515.         lea.l    ConfCmd2,a2
  1516.         tst.b    (a2)
  1517.         beq    CheckConf2
  1518.         bsr    ExecuteCmd
  1519.         cmp.l    #-1,d0
  1520.         beq    DoVoice3
  1521. CheckConf2:    clr.w    TickCount
  1522.         bra    Window1IDCMP
  1523.  
  1524.  
  1525. ;Save this word to be confirmed
  1526.  
  1527. CheckConf3:    move.l    a2,ConfAddress
  1528.  
  1529.         move.l    a2,a0
  1530.         lea.l    StringBuffer,a1
  1531.         move.w    #'* ',(a1)+
  1532.         bsr    CopyStrs
  1533.  
  1534.         lea.l    StringBuffer,a0
  1535.         bsr    GetLength
  1536.         bsr    Inform
  1537.  
  1538.         lea.l    ConfCmd1,a2
  1539.         tst.b    (a2)
  1540.         beq    CheckConf_OUT
  1541.         bsr    ExecuteCmd
  1542.         cmp.l    #-1,d0
  1543.         beq    DoVoice3
  1544. CheckConf_OUT:    clr.w    TickCount
  1545.         bra    Window1IDCMP
  1546.  
  1547. DoVoice1:    move.l    a2,a0
  1548.  
  1549.         push    a2
  1550.         bsr    GetLength
  1551.         bsr    Inform
  1552.         pull    a2
  1553.  
  1554.         clr.w    TickCount
  1555.  
  1556.         add.l    #GADLENG1,a2
  1557.         cmp.l    #0,(a2)
  1558.         beq    DoVoice2
  1559.  
  1560.         cmp.b    #'~',(a2)
  1561.         beq    DoSpecial
  1562.  
  1563.         bsr    ExecuteCmd        ;Execute command
  1564.  
  1565.         clr.l    ConfAddress        ;Forget confirm
  1566.         clr.w    Awake            ;Not awake anymore
  1567.  
  1568.         cmp.l    #-1,d0
  1569.         beq    DoVoice3
  1570.         bra    Window1IDCMP
  1571.  
  1572. DoSpecial:    add.l    #1,a2
  1573.         cmp.b    #'K',(a2)
  1574.         beq    DoSpecial2
  1575.         bra    DoVoice2        ;No Command
  1576.  
  1577. DoSpecial2:    add.l    #2,a2            ;Skip shortcut and space
  1578.         move.l    a2,a0
  1579.         lea.l    StringBuffer,a1
  1580.         bsr    CopyStrs
  1581.  
  1582.         bsr    SendEvents
  1583.         move.l    #4,d2
  1584.         tst.l    IEvents
  1585.         beq    DoVoice3        ;Command failed
  1586.         clr.l    IEvents
  1587.         bra    Window1IDCMP
  1588.  
  1589. DoVoice2:    lea.l    NoCMDText1,a0
  1590.         bsr    GetLength
  1591.         bsr    Inform
  1592.         lea.l    ErrCmd1,a2
  1593.         tst.b    (a2)
  1594.         beq    DoVoice2_OUT
  1595.         bsr    ExecuteCmd
  1596.         cmp.l    #-1,d0
  1597.         beq    DoVoice3
  1598. DoVoice2_OUT:    clr.w    TickCount
  1599.         bra    Window1IDCMP
  1600. DoVoice3:    lea.l    CMDFailText1,a0        ;Doesn't check if the
  1601.         bsr    GetLength        ;command fails
  1602.         bsr    Inform
  1603.         lea.l    ErrCmd2,a2
  1604.         tst.b    (a2)
  1605.         beq    DoVoice3_OUT
  1606.         bsr    ExecuteCmd
  1607. DoVoice3_OUT:    clr.w    TickCount
  1608.         bra    Window1IDCMP
  1609.  
  1610. VoiceUnknown:    lea.l    NoMatchText1,a0
  1611.         bsr    GetLength
  1612.         bsr    Inform
  1613.         lea.l    ErrCmd3,a2
  1614.         tst.b    (a2)
  1615.         beq    VoiceUn_OUT
  1616.         bsr    ExecuteCmd
  1617.         cmp.l    #-1,d0
  1618.         beq    DoVoice3
  1619. VoiceUn_OUT:    clr.w    TickCount
  1620.         bra    Window1IDCMP
  1621. VoiceClip:    lea.l    ClippingText1,a0
  1622.         bsr    GetLength
  1623.         bsr    Inform
  1624.         lea.l    ErrCmd4,a2
  1625.         tst.b    (a2)
  1626.         beq    VoiceClip_OUT
  1627.         bsr    ExecuteCmd
  1628.         cmp.l    #-1,d0
  1629.         beq    DoVoice3
  1630. VoiceClip_OUT:    clr.w    TickCount
  1631.         bra    Window1IDCMP
  1632. VoiceLow:    lea.l    LowVolText1,a0
  1633.         bsr    GetLength
  1634.         bsr    Inform
  1635.         lea.l    ErrCmd5,a2
  1636.         tst.b    (a2)
  1637.         beq    VoiceLow_OUT
  1638.         bsr    ExecuteCmd
  1639.         cmp.l    #-1,d0
  1640.         beq    DoVoice3
  1641. VoiceLow_OUT:    clr.w    TickCount
  1642.         bra    Window1IDCMP
  1643. VoiceNoisy:    lea.l    NoisyText1,a0
  1644.         bsr    GetLength
  1645.         bsr    Inform
  1646.         lea.l    ErrCmd6,a2
  1647.         tst.b    (a2)
  1648.         beq    VoiceNoisy_OUT
  1649.         bsr    ExecuteCmd
  1650.         cmp.l    #-1,d0
  1651.         beq    DoVoice3
  1652. VoiceNoisy_OUT:    clr.w    TickCount
  1653.         bra    Window1IDCMP
  1654.  
  1655. ExecuteCmd:    move.l    a2,d1            ;Execute command
  1656.         clr.l    d2
  1657.         lib    Dos,SystemTagList
  1658.         rts
  1659.  
  1660. CX:        cmp.l    #CXM_COMMAND,d2
  1661.         beq    DoCXCommand
  1662.         cmp.l    #CXM_IEVENT,d2
  1663.         beq    DoCXAppear
  1664.         move.l    #4,d0
  1665.         rts                ;Unknown command
  1666.  
  1667. DoCXCommand:    cmp.l    #CXCMD_APPEAR,d3
  1668.         beq    DoCXAppear
  1669.         cmp.l    #CXCMD_DISAPPEAR,d3
  1670.         beq    DoCXDisappear
  1671.         cmp.l    #CXCMD_KILL,d3
  1672.         beq    DoCXKill
  1673.         cmp.l    #CXCMD_UNIQUE,d3
  1674.         beq    DoCXAppear
  1675.         cmp.l    #CXCMD_ENABLE,d3
  1676.         beq    DoCXEnable
  1677.         cmp.l    #CXCMD_DISABLE,d3
  1678.         beq    DoCXDisable
  1679.         move.l    #4,d0
  1680.         rts                ;Unknown message
  1681.  
  1682. DoCXKill:    clr.l    d0
  1683.         rts
  1684.  
  1685. DoCXAppear:    tst.l    Window1
  1686.         bne    DoCXAppear_OUT
  1687.         tst.w    DisActive
  1688.         bne    DoCXDisap_OUT
  1689.         clr.l    OptionIconify
  1690.         bsr    OpenWin1
  1691.         bsr    SetModes
  1692.         tst.l    Window1
  1693.         bne    DoCXAppear_OUT
  1694.         sub.l    a0,a0
  1695.         lib    Intuition,DisplayBeep    ;Beep on error
  1696. DoCXAppear_OUT:    move.l    #4,d0
  1697.         rts
  1698.  
  1699. DoDoCXDisappear: bsr    DoCXDisappear
  1700.         bra    Window1IDCMP
  1701.  
  1702. DoCXDisappear:    tst.l    Window1
  1703.         beq    DoCXDisap_OUT
  1704.         tst.w    DisActive
  1705.         bne    DoCXDisap_OUT
  1706.         bsr    CheckModes
  1707.         bsr    CloseWin1
  1708. DoCXDisap_OUT:    move.l    #4,d0
  1709.         rts
  1710.  
  1711. DoCXEnable:    tst.w    DisActive
  1712.         bne    DoCXEnable1
  1713.         bsr    CLITypeOn
  1714. DoCXEnable_OUT:    move.l    #4,d0
  1715.         rts
  1716. DoCXEnable1:    bsr    CXDisable        ;Can't turn on
  1717.         bra    DoCXEnable_OUT
  1718.  
  1719. DoCXDisable:    tst.w    DisActive
  1720.         bne    DoCXDisable1
  1721.         bsr    CLITypeOff
  1722. DoCXDis_OUT:    move.l    #4,d0
  1723.         rts
  1724. DoCXDisable1:    bsr    CXEnable        ;Can't turn off
  1725.         bra    DoCXDis_OUT
  1726.  
  1727. CXEnable:    move.l    CXBroker1,a0
  1728.         move.l    #TRUE,d0
  1729.         lib    Commodities,ActivateCxObj
  1730.         rts
  1731.  
  1732. CXDisable:    move.l    CXBroker1,a0
  1733.         move.l    #FALSE,d0
  1734.         lib    Commodities,ActivateCxObj
  1735.         rts
  1736.  
  1737. DoSetResLo:    bsr    SetResLo
  1738.         bra    Window1IDCMP
  1739.  
  1740. DoSetResHi:    bsr    SetResHi
  1741.         bra    Window1IDCMP
  1742.  
  1743. SetResLo:    bsr    RemVTask1
  1744.         move.b    #RES_LO,PrefsSampRes
  1745.         bsr    AddVTask
  1746.         rts
  1747. SetResHi:    bsr    RemVTask1
  1748.         move.b    #RES_HI,PrefsSampRes
  1749.         bsr    AddVTask
  1750.         rts
  1751.  
  1752. DoSetAccLowest:    bsr    SetAccLowest
  1753.         bra    Window1IDCMP
  1754.  
  1755. DoSetAccLower:    bsr    SetAccLower
  1756.         bra    Window1IDCMP
  1757.  
  1758. DoSetAccLow:    bsr    SetAccLow
  1759.         bra    Window1IDCMP
  1760.  
  1761. DoSetAccNormal:    bsr    SetAccNormal
  1762.         bra    Window1IDCMP
  1763.  
  1764. DoSetAccHigh:    bsr    SetAccHigh
  1765.         bra    Window1IDCMP
  1766.  
  1767. DoSetAccHigher:    bsr    SetAccHigher
  1768.         bra    Window1IDCMP
  1769.  
  1770. DoSetAccEHigher: bsr    SetAccEHigher
  1771.         bra    Window1IDCMP
  1772.  
  1773. DoSetAccMaximum: bsr    SetAccMaximum
  1774.         bra    Window1IDCMP
  1775.  
  1776.  
  1777. SetAccLowest:    move.w    #AccVal1,PrefsScore
  1778.         rts
  1779.  
  1780. SetAccLower:    move.w    #AccVal2,PrefsScore
  1781.         rts
  1782.  
  1783. SetAccLow:    move.w    #AccVal3,PrefsScore
  1784.         rts
  1785.  
  1786. SetAccNormal:    move.w    #AccVal4,PrefsScore
  1787.         rts
  1788.  
  1789. SetAccHigh:    move.w    #AccVal5,PrefsScore
  1790.         rts
  1791.  
  1792. SetAccHigher:    move.w    #AccVal6,PrefsScore
  1793.         rts
  1794.  
  1795. SetAccEHigher:    move.w    #AccVal7,PrefsScore
  1796.         rts
  1797.  
  1798. SetAccMaximum:    move.w    #AccVal8,PrefsScore
  1799.         rts
  1800.  
  1801. DoSetLeft:    bsr    SetLeft
  1802.         bra    Window1IDCMP
  1803.  
  1804. DoSetRight:    bsr    SetRight
  1805.         bra    Window1IDCMP
  1806.  
  1807. DoCTRL_D:    tst.w    DisActive
  1808.         bne    DoCTRL_D_OUT
  1809.         bsr    CLITypeOff
  1810. DoCTRL_D_OUT:    bra    Window1IDCMP
  1811.  
  1812. DoCTRL_E:    tst.w    DisActive
  1813.         bne    DoCTRL_E_OUT
  1814.         bsr    CLITypeOn
  1815. DoCTRL_E_OUT:    bra    Window1IDCMP
  1816.  
  1817. CLITypeOff:    bsr    RemGads
  1818.         move.l    OnOffGad1,a0
  1819.         and.w    #~SELECTED,gg_Flags(a0)
  1820.         move.l    #5625242,d5        ;inform user
  1821.         bsr    RemVTask1
  1822.         bsr    AddGads
  1823.         rts
  1824.  
  1825. CLITypeOn:    bsr    RemGads
  1826.         move.l    OnOffGad1,a0
  1827.         or.w    #SELECTED,gg_Flags(a0)
  1828.         move.l    #5625242,d5        ;inform user
  1829.         bsr    AddVTask1
  1830.         bsr    AddGads
  1831.         rts
  1832.  
  1833. SetLeft:    move.b    #CHANNEL_LEFT,PrefsChannel
  1834.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1835.         beq    SetLeft_OUT
  1836.         bsr    RemVTask1
  1837.         move.l    #CHANNEL_LEFT,d0
  1838.         lib    Voice,PickChannel
  1839.         bsr    AddVTask
  1840. SetLeft_OUT:    rts
  1841.  
  1842. SetRight:    move.b    #CHANNEL_RIGHT,PrefsChannel
  1843.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1844.         beq    SetRight_OUT
  1845.         bsr    RemVTask1
  1846.         move.l    #CHANNEL_RIGHT,d0
  1847.         lib    Voice,PickChannel
  1848.         bsr    AddVTask
  1849. SetRight_OUT:    rts
  1850.  
  1851. DoSetMic:    bsr    SetMic
  1852.         bra    Window1IDCMP
  1853.  
  1854. DoSetLine:    bsr    SetLine
  1855.         bra    Window1IDCMP
  1856.  
  1857. SetMic:        move.b    #INPUT_MIC,PrefsInput
  1858.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1859.         beq    SetMic_OUT
  1860.         bsr    RemVTask1
  1861.         move.l    #INPUT_MIC,d0
  1862.         lib    Voice,PickInput
  1863.         bsr    AddVTask
  1864. SetMic_OUT:    rts
  1865.  
  1866. SetLine:    move.b    #INPUT_LINE,PrefsInput
  1867.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1868.         beq    SetLine_OUT
  1869.         bsr    RemVTask1
  1870.         move.l    #INPUT_LINE,d0
  1871.         lib    Voice,PickInput
  1872.         bsr    AddVTask
  1873. SetLine_OUT:    rts
  1874.  
  1875. DoSetSamp1:    bsr    SetSamp1
  1876.         bra    Window1IDCMP
  1877. DoSetSamp2:    bsr    SetSamp2
  1878.         bra    Window1IDCMP
  1879. DoSetSamp3:    bsr    SetSamp3
  1880.         bra    Window1IDCMP
  1881. DoSetSamp4:    bsr    SetSamp4
  1882.         bra    Window1IDCMP
  1883.  
  1884. SetSamp1:    bsr    RemVTask1
  1885.         move.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  1886.         move.l    #SAMP_PERFSND,d0
  1887.         clr.l    d1
  1888.         lib    Voice,PickSampler
  1889.         bsr    RemGads
  1890.         move.l    GainUGad1,a0
  1891.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1892.         move.l    GainDGad1,a0
  1893.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1894.         bsr    AddGads
  1895.         bsr    AddVTask
  1896.         rts
  1897. SetSamp2:    bsr    RemVTask1
  1898.         move.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  1899.         move.l    #SAMP_SNDMSTR,d0
  1900.         clr.l    d1
  1901.         lib    Voice,PickSampler
  1902.         bsr    RemGads
  1903.         move.l    GainUGad1,a0
  1904.         or.w    #GADGDISABLED,gg_Flags(a0)
  1905.         move.l    GainDGad1,a0
  1906.         or.w    #GADGDISABLED,gg_Flags(a0)
  1907.         bsr    AddGads
  1908.         bsr    AddVTask
  1909.         rts
  1910. SetSamp3:    bsr    RemVTask1
  1911.         move.b    #SAMP_DSS8,PrefsSampType        ;DSS8
  1912.         move.l    #SAMP_DSS8,d0
  1913.         clr.l    d1
  1914.         move.b    PrefsGain,d1
  1915.         lib    Voice,PickSampler
  1916.         bsr    RemGads
  1917.         move.l    GainUGad1,a0
  1918.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1919.         move.l    GainDGad1,a0
  1920.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1921.         bsr    AddGads
  1922.         bsr    AddVTask
  1923.         rts
  1924. SetSamp4:    bsr    RemVTask1
  1925.         move.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  1926.         move.l    #SAMP_GENERIC,d0
  1927.         clr.l    d1
  1928.         lib    Voice,PickSampler
  1929.         bsr    RemGads
  1930.         move.l    GainUGad1,a0
  1931.         or.w    #GADGDISABLED,gg_Flags(a0)
  1932.         move.l    GainDGad1,a0
  1933.         or.w    #GADGDISABLED,gg_Flags(a0)
  1934.         bsr    AddGads
  1935.         bsr    AddVTask
  1936.         rts
  1937.  
  1938. DoSetTimerA:    bsr    SetTimerA
  1939.         bra    Window1IDCMP
  1940.  
  1941. DoSetTimerB:    bsr    SetTimerB
  1942.         bra    Window1IDCMP
  1943.  
  1944. SetTimerA:    bsr    RemVTask1
  1945.         move.b    #TIMER_A,PrefsTimer        ;Timer A=1
  1946.         move.l    #TIMER_A,d0
  1947.         lib    Voice,PickTimer
  1948.         bsr    AddVTask
  1949.         rts
  1950.  
  1951. SetTimerB:    bsr    RemVTask1
  1952.         move.b    #TIMER_B,PrefsTimer        ;Timer B=0
  1953.         move.l    #TIMER_B,d0
  1954.         lib    Voice,PickTimer
  1955.         bsr    AddVTask
  1956.         rts
  1957.  
  1958. DoConfirm:    bsr    Confirm
  1959.         bra    Window1IDCMP
  1960.  
  1961. Confirm:    clr.b    PrefsConfirm
  1962.         move.l    mlist,a0            ;Test menu
  1963.         move.l    #ConfirmMenuN,d0
  1964.         lib    Intuition,ItemAddress
  1965.         move.l    d0,a0
  1966.         move.w    $c(a0),d0
  1967.         and.w    #CHECKED,d0
  1968.         cmp.w    #CHECKED,d0
  1969.         bne    Confirm_OUT
  1970.         move.b    #$01,PrefsConfirm
  1971. Confirm_OUT:    rts
  1972.  
  1973. DoSetWake0:    bsr    SetWake0
  1974.         bra    Window1IDCMP
  1975.  
  1976. SetWake0:    move.b    #0,PrefsWake
  1977.         rts
  1978.  
  1979. DoSetWake5:    bsr    SetWake5
  1980.         bra    Window1IDCMP
  1981.  
  1982. SetWake5:    move.b    #5,PrefsWake
  1983.         bsr    ClearTimer
  1984.         move.b    PrefsWake,d0
  1985.         move.l    d0,Time
  1986.         bsr    Waiter
  1987.         rts
  1988.  
  1989. DoSetWake10:    bsr    SetWake10
  1990.         bra    Window1IDCMP
  1991.  
  1992. SetWake10:    move.b    #10,PrefsWake
  1993.         bsr    ClearTimer
  1994.         move.b    PrefsWake,d0
  1995.         move.l    d0,Time
  1996.         bsr    Waiter
  1997.         rts
  1998.  
  1999. DoSetWake15:    bsr    SetWake15
  2000.         bra    Window1IDCMP
  2001.  
  2002. SetWake15:    move.b    #15,PrefsWake
  2003.         bsr    ClearTimer
  2004.         move.b    PrefsWake,d0
  2005.         move.l    d0,Time
  2006.         bsr    Waiter
  2007.         rts
  2008.  
  2009. DoSetWake20:    bsr    SetWake20
  2010.         bra    Window1IDCMP
  2011.  
  2012. SetWake20:    move.b    #20,PrefsWake
  2013.         bsr    ClearTimer
  2014.         move.b    PrefsWake,d0
  2015.         move.l    d0,Time
  2016.         bsr    Waiter
  2017.         rts
  2018.  
  2019. ToFront:    tst.l    Window1
  2020.         beq    ToFront_OUT
  2021.         move.l    Window1,a0
  2022.         lib    Intuition,WindowToFront
  2023. ToFront_OUT:    rts
  2024.  
  2025. ToBack:        tst.l    Window
  2026.         beq    ToBack_OUT
  2027.         move.l    Window1,a0
  2028.         lib    Intuition,WindowToBack
  2029. ToBack_OUT:    rts
  2030.  
  2031. Zoom:        tst.l    Window1
  2032.         beq    Zoom_OUT
  2033.         move.l    Window1,a0
  2034.         lib    Intuition,ZipWindow
  2035. Zoom_OUT:    rts
  2036.  
  2037. DoLoad:        bsr    Load            ;RemVTask1 in Load
  2038.         bsr    AddVTask
  2039.         move.l    #5,d1
  2040.         lib    Dos,Delay
  2041.         bra    ActivateGads
  2042.  
  2043. DoDataLoad:    bsr    RemGads                ;RemVTask1 in Load
  2044.         bsr    Load2.1
  2045.         bsr    AddVTask
  2046.         bsr    AddGads            ;Keep Add/RemGads (Load2.1)
  2047.         move.l    #5,d1
  2048.         lib    Dos,Delay
  2049.         bra    Window1IDCMP
  2050.  
  2051. DoOnOff:    move.l    #5625242,d5        ;inform user
  2052.         bsr    AddVTask        ;one or the other
  2053.         bsr    RemVTask        ;will respond
  2054.         bra    Window1IDCMP
  2055.  
  2056. DoGainUp:    bsr    GainUp
  2057.         bra    Window1IDCMP
  2058. DoGainDown:    bsr    GainDown
  2059.         bra    Window1IDCMP
  2060.  
  2061. GainUp:        lib    Voice,GainUp
  2062.         cmp.b    #SAMP_DSS8,PrefsSampType
  2063.         bne    GainUp_OUT
  2064.         lib    Voice,WhatGain
  2065.         move.b    d0,PrefsGain
  2066.         move.l    d0,GainPointer
  2067.  
  2068.         tst.l    Window1
  2069.         beq    GainUp_OUT
  2070.         move.l    GainGad1,a0
  2071.         move.l    Window1,a1
  2072.         sub.l    a2,a2
  2073.         lea.l    GainGadTagList,a3
  2074.         lib    GadTools,GT_SetGadgetAttrsA
  2075. GainUp_OUT:    rts
  2076.  
  2077. GainDown:    lib    Voice,GainDown
  2078.         cmp.b    #SAMP_DSS8,PrefsSampType
  2079.         bne    GainDown_OUT
  2080.         lib    Voice,WhatGain
  2081.         move.b    d0,PrefsGain
  2082.         move.l    d0,GainPointer
  2083.  
  2084.         tst.l    Window1
  2085.         beq    GainDown_OUT
  2086.         move.l    GainGad1,a0
  2087.         move.l    Window1,a1
  2088.         sub.l    a2,a2
  2089.         lea.l    GainGadTagList,a3
  2090.         lib    GadTools,GT_SetGadgetAttrsA
  2091. GainDown_OUT:    rts
  2092.  
  2093. ActivateGads:    tst.l    Window1
  2094.         beq    ActivateGs_OUT
  2095.         move.l    DatStrGad1,a0
  2096.         move.l    Window1,a1
  2097.         sub.l    a2,a2
  2098.         lib    Intuition,ActivateGadget
  2099. ActivateGs_OUT:    bra    Window1IDCMP
  2100.  
  2101. ActGad:        tst.l    Window1
  2102.         beq    ActGad_OUT
  2103.         move.l    DatStrGad1,a0
  2104.         move.l    Window1,a1
  2105.         sub.l    a2,a2
  2106.         lib    Intuition,ActivateGadget
  2107. ActGad_OUT:    rts
  2108.  
  2109. ActivateGads2:    cmp.w    #55,$26(a5)
  2110.         beq    Get
  2111.         cmp.w    #1,$26(a5)
  2112.         beq    Learn
  2113.         cmp.w    #2,$26(a5)
  2114.         bne    Window2IDCMP
  2115.         cmp.l    #$00,(a5)
  2116.         beq    ActivateGads2.01
  2117.         move.l    (a5),a0
  2118.         move.l    StrGad20,a1
  2119.         cmp.l    a5,a1
  2120.         bne    ActivateGads2.1
  2121. ActivateGads2.01: move.l StrGad1,a0
  2122. ActivateGads2.1: move.l Window2,a1
  2123.         sub.l    a2,a2
  2124.         lib    Intuition,ActivateGadget
  2125.         bra    Window2IDCMP
  2126.  
  2127. ActGad2:    move.l    StrGad1,a0
  2128.         move.l    Window2,a1
  2129.         sub.l    a2,a2
  2130.         lib    Intuition,ActivateGadget
  2131.         rts
  2132.  
  2133. ActGad3:    move.l    StrGad21,a0
  2134.         move.l    Window3,a1
  2135.         sub.l    a2,a2
  2136.         lib    Intuition,ActivateGadget
  2137.         rts
  2138.  
  2139. ActivateGads4:    cmp.w    #55,$26(a5)
  2140.         beq    Get2
  2141.         cmp.w    #2,$26(a5)
  2142.         bne    Window4IDCMP
  2143.         cmp.l    #$00,(a5)
  2144.         beq    ActivateGads4.01
  2145.         move.l    (a5),a0
  2146.         move.l    StrGad30,a1
  2147.         cmp.l    a5,a1
  2148.         bne    ActivateGads4.1
  2149. ActivateGads4.01: move.l StrGad22,a0
  2150. ActivateGads4.1: move.l Window4,a1
  2151.         sub.l    a2,a2
  2152.         lib    Intuition,ActivateGadget
  2153.         bra    Window4IDCMP
  2154.  
  2155. ActGad4:    move.l    StrGad22,a0
  2156.         move.l    Window4,a1
  2157.         sub.l    a2,a2
  2158.         lib    Intuition,ActivateGadget
  2159.         rts
  2160.  
  2161. Learn:        move.w    Page,d0
  2162.         mulu.w    #NUMGADS,d0
  2163.         move.l    $22(a5),a0
  2164.         move.l    (a0),a0
  2165.         cmp.l    StrGadBuf1,a0
  2166.         bne    Learn1
  2167.         add.w    #1,d0
  2168.         bra    Learn10
  2169. Learn1:        cmp.l    StrGadBuf3,a0
  2170.         bne    Learn2
  2171.         add.w    #2,d0
  2172.         bra    Learn10
  2173. Learn2:        cmp.l    StrGadBuf5,a0
  2174.         bne    Learn3
  2175.         add.w    #3,d0
  2176.         bra    Learn10
  2177. Learn3:        cmp.l    StrGadBuf7,a0
  2178.         bne    Learn4
  2179.         add.w    #4,d0
  2180.         bra    Learn10
  2181. Learn4:        cmp.l    StrGadBuf9,a0
  2182.         bne    Learn5
  2183.         add.w    #5,d0
  2184.         bra    Learn10
  2185. Learn5:        cmp.l    StrGadBuf11,a0
  2186.         bne    Learn6
  2187.         add.w    #6,d0
  2188.         bra    Learn10
  2189. Learn6:        cmp.l    StrGadBuf13,a0
  2190.         bne    Learn7
  2191.         add.w    #7,d0
  2192.         bra    Learn10
  2193. Learn7:        cmp.l    StrGadBuf15,a0
  2194.         bne    Learn8
  2195.         add.w    #8,d0
  2196.         bra    Learn10
  2197. Learn8:        cmp.l    StrGadBuf17,a0
  2198.         bne    Learn9
  2199.         add.w    #9,d0
  2200.         bra    Learn10
  2201. Learn9:        cmp.l    StrGadBuf19,a0
  2202.         bne    Learn10
  2203.         add.w    #10,d0
  2204.  
  2205. Learn10:    sub.w    #1,d0
  2206.         lea.l    MapBuffer,a0
  2207.         move.l    $22(a5),a1
  2208.         move.l    (a1),a1
  2209.         sub.l    a2,a2        ;screen
  2210.         move.l    #220,d1
  2211.         move.l    #42,d2
  2212.         lib    Voice,Learn
  2213.         move.l    (a5),a0
  2214.         bra    ActivateGads2.1
  2215.  
  2216. Load:        bsr    RemVTask1
  2217.  
  2218.         move.l    FromFile,d1        ;If set to something else
  2219.         bne    Load1
  2220.         lea.l    PrefsName,a0
  2221.         move.l    a0,d1
  2222. Load1:        move.l    #MODE_OLDFILE,d2
  2223.         lib    Dos,Open
  2224.         move.l    d0,PrefsFile
  2225.         beq    Load_ERR1
  2226.  
  2227.         move.l    PrefsFile,d1
  2228.         lea.l    Prefs,a0
  2229.         move.l    a0,d2
  2230.         move.l    #4,d3
  2231.         lib    Dos,Read
  2232.         cmp.l    #4,d0
  2233.         bne    Load_ERR2
  2234.  
  2235.         cmp.l    #VSFileVersion,Prefs
  2236.         bne    Load_ERR3
  2237.  
  2238.         move.l    PrefsFile,d1
  2239.         add.l    #4,d2
  2240.         move.l    #PrefsSize-4,d3
  2241.         lib    Dos,Read
  2242.         cmp.l    #PrefsSize-4,d0
  2243.         bne    Load_ERR2
  2244.  
  2245. Load2:        bsr    SetModes        ;fixes startup datafile bug
  2246. Load2.1:    move.l    DatStrGadBuf1,d1    ;jump here to load data file
  2247.         move.l    #MODE_OLDFILE,d2
  2248.         lib    Dos,Open
  2249.         move.l    d0,DataFile
  2250.         beq    Load_ERR1.1
  2251.  
  2252.         move.l    DataFile,d1
  2253.         lea.l    MapBuffer,a0
  2254.         move.l    a0,d2
  2255.         move.l    #DataSize,d3
  2256.         lib    Dos,Read
  2257.         cmp.l    #DataSize,d0
  2258.         bne    Load_ERR4
  2259.  
  2260.         move.w    #1,Saved
  2261.  
  2262. Load_OUT:    move.l    DataFile,d1
  2263.         beq    Load_OUT0.1
  2264.         lib    Dos,Close
  2265.         clr.l    DataFile
  2266. Load_OUT0.1:    move.l    PrefsFile,d1
  2267.         beq    Load_OUT1
  2268.         lib    Dos,Close
  2269.         clr.l    PrefsFile
  2270.  
  2271. Load_OUT1:    rts
  2272.  
  2273. Load_ERR1:    lea.l    File_ERRTxt1,a1
  2274.         sub.l    a2,a2
  2275.         lea.l    OKTxt,a3
  2276.         bsr    DoAutoRequest
  2277.         bra    Load2
  2278.  
  2279. Load_ERR1.1:    lea.l    File_ERRTxt4,a1
  2280.         sub.l    a2,a2
  2281.         lea.l    OKTxt,a3
  2282.         bsr    DoAutoRequest
  2283.         bra    Load_OUT
  2284.  
  2285. Load_ERR2:    lea.l    File_ERRTxt2,a1
  2286.         sub.l    a2,a2
  2287.         lea.l    OKTxt,a3
  2288.         bsr    DoAutoRequest
  2289.         bra    Load2
  2290.  
  2291. Load_ERR3:    lea.l    File_ERRTxt3,a1
  2292.         sub.l    a2,a2
  2293.         lea.l    OKTxt,a3
  2294.         bsr    DoAutoRequest
  2295.         bra    Load2
  2296.  
  2297. Load_ERR4:    lea.l    File_ERRTxt2,a1
  2298.         sub.l    a2,a2
  2299.         lea.l    OKTxt,a3
  2300.         bsr    DoAutoRequest
  2301.         bra    Load_OUT
  2302.  
  2303. Save:        bsr    CheckModes
  2304.  
  2305.         move.l    FromFile,d1        ;If set to something else
  2306.         bne    Save1
  2307.         lea.l    PrefsName,a0
  2308.         move.l    a0,d1
  2309. Save1:        move.l    #MODE_NEWFILE,d2
  2310.         lib    Dos,Open
  2311.         move.l    d0,PrefsFile
  2312.         beq    Save_ERR1
  2313.  
  2314.         move.l    #VSFileVersion,Prefs
  2315.  
  2316.         move.l    PrefsFile,d1
  2317.         lea.l    Prefs,a0
  2318.         move.l    a0,d2
  2319.         move.l    #PrefsSize,d3
  2320.         lib    Dos,Write
  2321.         cmp.l    #PrefsSize,d0
  2322.         bne    Save_ERR2
  2323.  
  2324. Save2:        move.l    DatStrGadBuf1,d1
  2325.         move.l    #MODE_NEWFILE,d2
  2326.         lib    Dos,Open
  2327.         move.l    d0,DataFile
  2328.         beq    Save_ERR1.1
  2329.  
  2330.         move.l    DataFile,d1
  2331.         lea.l    MapBuffer,a0
  2332.         move.l    a0,d2
  2333.         move.l    #DataSize,d3
  2334.         lib    Dos,Write
  2335.         cmp.l    #DataSize,d0
  2336.         bne    Save_ERR2
  2337.  
  2338.         move.w    #1,Saved
  2339.  
  2340. Save_OUT:    move.l    DataFile,d1
  2341.         beq    Save_OUT0.1
  2342.         lib    Dos,Close
  2343.         clr.l    DataFile
  2344. Save_OUT0.1:    move.l    PrefsFile,d1
  2345.         beq    Save_OUT1
  2346.         lib    Dos,Close
  2347.         clr.l    PrefsFile
  2348. Save_OUT1:    bra    ActivateGads
  2349.  
  2350. Save_ERR1:    lea.l    File_ERRTxt1,a1
  2351.         move.l    #$00,a2
  2352.         lea.l    OKTxt,a3
  2353.         bsr    DoAutoRequest
  2354.         clr.w    Saved
  2355.         bra    Save2
  2356.  
  2357. Save_ERR1.1:    lea.l    File_ERRTxt4,a1
  2358.         move.l    #$00,a2
  2359.         lea.l    OKTxt,a3
  2360.         bsr    DoAutoRequest
  2361.         clr.w    Saved
  2362.         bra    Save_OUT
  2363.  
  2364. Save_ERR2:    lea.l    File_ERRTxt2,a1
  2365.         move.l    #$00,a2
  2366.         lea.l    OKTxt,a3
  2367.         bsr    DoAutoRequest
  2368.         clr.w    Saved
  2369.         bra    Save_OUT
  2370.  
  2371. About:        move.w    #1,DisActive
  2372.         bsr    RemVTask1
  2373.         bsr    SleepPointer
  2374.         bsr    MenusOff
  2375.         bsr    RemGads
  2376.  
  2377.         move.l    Window1,a0
  2378.         lea.l    AboutTxt1,a1
  2379.         sub.l    a2,a2        ;positive text
  2380.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  2381.         clr.l    d0
  2382.         clr.l    d1
  2383.         move.l    #320,d2
  2384.         move.l    #$50,d3
  2385.         lib    Intuition,AutoRequest
  2386.         clr.w    DisActive
  2387.         bsr    AddGads
  2388.         bsr    MenusOn
  2389.         bsr    NormalPointer
  2390.         bsr    AddVTask
  2391.         bra    Window1IDCMP
  2392.  
  2393. ;This is an emergency exit.
  2394.  
  2395. Break:        lea.l    BreakText1,a0
  2396.         bsr    Printer
  2397.         clr.l    d0
  2398.         rts
  2399.  
  2400. AddVTask:    tst.l    Window1            ;BUG: Turns on anyway
  2401.         beq    AddVTask1        ;Window not open
  2402.         move.l    OnOffGad1,a0
  2403.         move.w    gg_Flags(a0),d0
  2404.         and.w    #SELECTED,d0
  2405.         cmp.w    #SELECTED,d0
  2406.         bne    AddVTask_OUT        ;Already active
  2407. AddVTask1:    tst.w    TaskOn
  2408.         bne    AddVTask_OUT
  2409.         lea.l    MapBuffer,a0
  2410.         move.l    VoicePort,a1
  2411.         clr.l    d0
  2412.         clr.l    d1
  2413.         move.w    #VocabSIZE,d0
  2414.         move.b    PrefsSampRes,d1
  2415.         lib    Voice,AddVoiceTask
  2416.  
  2417.         move.l    PrefsPriority,d0
  2418.         lib    Voice,SetVoicePri
  2419.  
  2420.         move.w    #1,TaskOn
  2421.         move.b    #1,PrefsOnOff
  2422.  
  2423.         cmp.l    #5625242,d5
  2424.         bne    AddVTask_OUT
  2425.         lea.l    TaskOnText1,a0
  2426.         bsr    GetLength
  2427.         bsr    Inform
  2428.         bsr    CXEnable
  2429.         clr.l    d5
  2430. AddVTask_OUT:    rts
  2431.  
  2432. RemVTask:    tst.l    Window1            ;BUG: Turns off anyway?
  2433.         beq    RemVTask1        ;Window not open
  2434.         move.l    #5625242,d5
  2435.         move.l    OnOffGad1,a0
  2436.         move.w    gg_Flags(a0),d0
  2437.         and.w    #SELECTED,d0
  2438.         cmp.w    #SELECTED,d0
  2439.         beq    RemVTask_OUT
  2440. RemVTask1:    tst.w    TaskOn
  2441.         beq    RemVTask_OUT
  2442.  
  2443.         lib    Exec,Forbid
  2444.         bsr    C3GetMsg1        ;Clear messages
  2445.         lib    Exec,Permit
  2446.         lib    Voice,RemVoiceTask
  2447.  
  2448.         clr.w    TaskOn
  2449.         clr.b    PrefsOnOff
  2450.         cmp.l    #5625242,d5
  2451.         bne    RemVTask_OUT
  2452.         lea.l    TaskOffText1,a0
  2453.         bsr    GetLength
  2454.         bsr    Inform
  2455.         bsr    CXDisable
  2456. RemVTask_OUT:    rts
  2457.  
  2458. SetModes:    tst.l    Window1
  2459.         beq    SetModes_OUT2
  2460.  
  2461.         bsr    RemGads
  2462.  
  2463.         clr.l    GainPointer
  2464.         move.b    PrefsGain,GainPointer+3
  2465.  
  2466.         move.l    OnOffGad1,a0
  2467.         and.w    #~SELECTED,gg_Flags(a0)
  2468.  
  2469.         move.l    OnOffGad1,a0
  2470.         tst.b    PrefsOnOff
  2471.         beq    SetModes1
  2472.         or.w    #SELECTED,gg_Flags(a0)
  2473.  
  2474. SetModes1:    move.l    mlist,a0            ;UnCheck SampType1
  2475.         move.l    #Samp1MenuN,d0
  2476.         lib    Intuition,ItemAddress
  2477.         move.l    d0,a0
  2478.         and.w    #~CHECKED,$c(a0)
  2479.  
  2480.         move.l    mlist,a0            ;UnCheck SampType2
  2481.         move.l    #Samp2MenuN,d0
  2482.         lib    Intuition,ItemAddress
  2483.         move.l    d0,a0
  2484.         and.w    #~CHECKED,$c(a0)
  2485.  
  2486.         move.l    mlist,a0            ;UnCheck SampType3
  2487.         move.l    #Samp3MenuN,d0
  2488.         lib    Intuition,ItemAddress
  2489.         move.l    d0,a0
  2490.         and.w    #~CHECKED,$c(a0)
  2491.  
  2492.         move.l    mlist,a0            ;UnCheck SampType4
  2493.         move.l    #Samp4MenuN,d0
  2494.         lib    Intuition,ItemAddress
  2495.         move.l    d0,a0
  2496.         and.w    #~CHECKED,$c(a0)
  2497.  
  2498.         cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2499.         bne    SetModes2
  2500.         move.l    mlist,a0
  2501.         move.l    #Samp1MenuN,d0
  2502.         lib    Intuition,ItemAddress
  2503.         move.l    d0,a0
  2504.         or.w    #CHECKED,$c(a0)
  2505.         move.l    GainUGad1,a0
  2506.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2507.         move.l    GainDGad1,a0
  2508.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2509.  
  2510. SetModes2:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2511.         bne    SetModes2.1
  2512.         move.l    mlist,a0
  2513.         move.l    #Samp2MenuN,d0
  2514.         lib    Intuition,ItemAddress
  2515.         move.l    d0,a0
  2516.         or.w    #CHECKED,$c(a0)
  2517.         move.l    GainUGad1,a0
  2518.         or.w    #GADGDISABLED,gg_Flags(a0)
  2519.         move.l    GainDGad1,a0
  2520.         or.w    #GADGDISABLED,gg_Flags(a0)
  2521.  
  2522. SetModes2.1:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2523.         bne    SetModes2.2
  2524.         move.l    mlist,a0
  2525.         move.l    #Samp3MenuN,d0
  2526.         lib    Intuition,ItemAddress
  2527.         move.l    d0,a0
  2528.         or.w    #CHECKED,$c(a0)
  2529.         move.l    GainUGad1,a0
  2530.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2531.         move.l    GainDGad1,a0
  2532.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2533.  
  2534. SetModes2.2:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2535.         bne    SetModes3
  2536.         move.l    mlist,a0
  2537.         move.l    #Samp4MenuN,d0
  2538.         lib    Intuition,ItemAddress
  2539.         move.l    d0,a0
  2540.         or.w    #CHECKED,$c(a0)
  2541.         move.l    GainUGad1,a0
  2542.         or.w    #GADGDISABLED,gg_Flags(a0)
  2543.         move.l    GainDGad1,a0
  2544.         or.w    #GADGDISABLED,gg_Flags(a0)
  2545.  
  2546. SetModes3:    move.l    mlist,a0            ;UnCheck ResLo
  2547.         move.l    #ResLoMenuN,d0
  2548.         lib    Intuition,ItemAddress
  2549.         move.l    d0,a0
  2550.         and.w    #~CHECKED,$c(a0)
  2551.  
  2552.         move.l    mlist,a0            ;UnCheck ResHi
  2553.         move.l    #ResHiMenuN,d0
  2554.         lib    Intuition,ItemAddress
  2555.         move.l    d0,a0
  2556.         and.w    #~CHECKED,$c(a0)
  2557.  
  2558.         cmp.b    #1,PrefsSampRes
  2559.         bne    SetModes4
  2560.         move.l    mlist,a0
  2561.         move.l    #ResLoMenuN,d0
  2562.         lib    Intuition,ItemAddress
  2563.         move.l    d0,a0
  2564.         or.w    #CHECKED,$c(a0)
  2565.  
  2566. SetModes4:    tst.b    PrefsSampRes
  2567.         bne    SetModes5
  2568.         move.l    mlist,a0
  2569.         move.l    #ResHiMenuN,d0
  2570.         lib    Intuition,ItemAddress
  2571.         move.l    d0,a0
  2572.         or.w    #CHECKED,$c(a0)
  2573.  
  2574. SetModes5:    move.l    mlist,a0            ;UnCheck Lowest
  2575.         move.l    #Acc1MenuN,d0
  2576.         lib    Intuition,ItemAddress
  2577.         move.l    d0,a0
  2578.         and.w    #~CHECKED,$c(a0)
  2579.  
  2580.         move.l    mlist,a0            ;UnCheck Lower
  2581.         move.l    #Acc2MenuN,d0
  2582.         lib    Intuition,ItemAddress
  2583.         move.l    d0,a0
  2584.         and.w    #~CHECKED,$c(a0)
  2585.  
  2586.         move.l    mlist,a0            ;UnCheck Low
  2587.         move.l    #Acc3MenuN,d0
  2588.         lib    Intuition,ItemAddress
  2589.         move.l    d0,a0
  2590.         and.w    #~CHECKED,$c(a0)
  2591.  
  2592.         move.l    mlist,a0            ;UnCheck Normal
  2593.         move.l    #Acc4MenuN,d0
  2594.         lib    Intuition,ItemAddress
  2595.         move.l    d0,a0
  2596.         and.w    #~CHECKED,$c(a0)
  2597.  
  2598.         move.l    mlist,a0            ;UnCheck High
  2599.         move.l    #Acc5MenuN,d0
  2600.         lib    Intuition,ItemAddress
  2601.         move.l    d0,a0
  2602.         and.w    #~CHECKED,$c(a0)
  2603.  
  2604.         move.l    mlist,a0            ;UnCheck Higher
  2605.         move.l    #Acc6MenuN,d0
  2606.         lib    Intuition,ItemAddress
  2607.         move.l    d0,a0
  2608.         and.w    #~CHECKED,$c(a0)
  2609.  
  2610.         move.l    mlist,a0            ;UnCheck Even higher
  2611.         move.l    #Acc7MenuN,d0
  2612.         lib    Intuition,ItemAddress
  2613.         move.l    d0,a0
  2614.         and.w    #~CHECKED,$c(a0)
  2615.  
  2616.         move.l    mlist,a0            ;UnCheck Maximum
  2617.         move.l    #Acc8MenuN,d0
  2618.         lib    Intuition,ItemAddress
  2619.         move.l    d0,a0
  2620.         and.w    #~CHECKED,$c(a0)
  2621.  
  2622.         cmp.w    #AccVal1,PrefsScore
  2623.         bne    SetModes7
  2624.         move.l    mlist,a0
  2625.         move.l    #Acc1MenuN,d0
  2626.         lib    Intuition,ItemAddress
  2627.         move.l    d0,a0
  2628.         or.w    #CHECKED,$c(a0)
  2629.  
  2630. SetModes7:    cmp.w    #AccVal2,PrefsScore
  2631.         bne    SetModes8
  2632.         move.l    mlist,a0
  2633.         move.l    #Acc2MenuN,d0
  2634.         lib    Intuition,ItemAddress
  2635.         move.l    d0,a0
  2636.         or.w    #CHECKED,$c(a0)
  2637.  
  2638. SetModes8:    cmp.w    #AccVal3,PrefsScore
  2639.         bne    SetModes9
  2640.         move.l    mlist,a0
  2641.         move.l    #Acc3MenuN,d0
  2642.         lib    Intuition,ItemAddress
  2643.         move.l    d0,a0
  2644.         or.w    #CHECKED,$c(a0)
  2645.  
  2646. SetModes9:    cmp.w    #AccVal4,PrefsScore
  2647.         bne    SetModes10
  2648.         move.l    mlist,a0
  2649.         move.l    #Acc4MenuN,d0
  2650.         lib    Intuition,ItemAddress
  2651.         move.l    d0,a0
  2652.         or.w    #CHECKED,$c(a0)
  2653.  
  2654. SetModes10:    cmp.w    #AccVal5,PrefsScore
  2655.         bne    SetModes11
  2656.         move.l    mlist,a0
  2657.         move.l    #Acc5MenuN,d0
  2658.         lib    Intuition,ItemAddress
  2659.         move.l    d0,a0
  2660.         or.w    #CHECKED,$c(a0)
  2661.  
  2662. SetModes11:    cmp.w    #AccVal6,PrefsScore
  2663.         bne    SetModes12
  2664.         move.l    mlist,a0
  2665.         move.l    #Acc6MenuN,d0
  2666.         lib    Intuition,ItemAddress
  2667.         move.l    d0,a0
  2668.         or.w    #CHECKED,$c(a0)
  2669.  
  2670. SetModes12:    cmp.w    #AccVal7,PrefsScore
  2671.         bne    SetModes13
  2672.         move.l    mlist,a0
  2673.         move.l    #Acc7MenuN,d0
  2674.         lib    Intuition,ItemAddress
  2675.         move.l    d0,a0
  2676.         or.w    #CHECKED,$c(a0)
  2677.  
  2678. SetModes13:    cmp.w    #AccVal8,PrefsScore
  2679.         bne    SetModes14
  2680.         move.l    mlist,a0
  2681.         move.l    #Acc8MenuN,d0
  2682.         lib    Intuition,ItemAddress
  2683.         move.l    d0,a0
  2684.         or.w    #CHECKED,$c(a0)
  2685.  
  2686. SetModes14:    move.l    mlist,a0            ;UnCheck Left
  2687.         move.l    #Chan1MenuN,d0
  2688.         lib    Intuition,ItemAddress
  2689.         move.l    d0,a0
  2690.         and.w    #~CHECKED,$c(a0)
  2691.  
  2692.         move.l    mlist,a0            ;UnCheck Right
  2693.         move.l    #Chan2MenuN,d0
  2694.         lib    Intuition,ItemAddress
  2695.         move.l    d0,a0
  2696.         and.w    #~CHECKED,$c(a0)
  2697.  
  2698.         move.l    mlist,a0            ;UnCheck Mic
  2699.         move.l    #Input1MenuN,d0
  2700.         lib    Intuition,ItemAddress
  2701.         move.l    d0,a0
  2702.         and.w    #~CHECKED,$c(a0)
  2703.  
  2704.         move.l    mlist,a0            ;UnCheck Line
  2705.         move.l    #Input2MenuN,d0
  2706.         lib    Intuition,ItemAddress
  2707.         move.l    d0,a0
  2708.         and.w    #~CHECKED,$c(a0)
  2709.  
  2710.         cmp.b    #CHANNEL_LEFT,PrefsChannel
  2711.         bne    SetModes15
  2712.         move.l    mlist,a0
  2713.         move.l    #Chan1MenuN,d0
  2714.         lib    Intuition,ItemAddress
  2715.         move.l    d0,a0
  2716.         or.w    #CHECKED,$c(a0)
  2717.  
  2718. SetModes15:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2719.         bne    SetModes16
  2720.         move.l    mlist,a0
  2721.         move.l    #Chan2MenuN,d0
  2722.         lib    Intuition,ItemAddress
  2723.         move.l    d0,a0
  2724.         or.w    #CHECKED,$c(a0)
  2725.  
  2726. SetModes16:    cmp.b    #INPUT_MIC,PrefsInput
  2727.         bne    SetModes17
  2728.         move.l    mlist,a0
  2729.         move.l    #Input1MenuN,d0
  2730.         lib    Intuition,ItemAddress
  2731.         move.l    d0,a0
  2732.         or.w    #CHECKED,$c(a0)
  2733.  
  2734. SetModes17:    cmp.b    #INPUT_LINE,PrefsInput
  2735.         bne    SetModes18
  2736.         move.l    mlist,a0
  2737.         move.l    #Input2MenuN,d0
  2738.         lib    Intuition,ItemAddress
  2739.         move.l    d0,a0
  2740.         or.w    #CHECKED,$c(a0)
  2741.  
  2742. SetModes18:    move.l    mlist,a0            ;UnCheck Timer A
  2743.         move.l    #Timer1MenuN,d0
  2744.         lib    Intuition,ItemAddress
  2745.         move.l    d0,a0
  2746.         and.w    #~CHECKED,$c(a0)
  2747.  
  2748.         move.l    mlist,a0            ;UnCheck Timer B
  2749.         move.l    #Timer2MenuN,d0
  2750.         lib    Intuition,ItemAddress
  2751.         move.l    d0,a0
  2752.         and.w    #~CHECKED,$c(a0)
  2753.  
  2754.         cmp.b    #TIMER_A,PrefsTimer
  2755.         bne    SetModes19
  2756.         move.l    mlist,a0
  2757.         move.l    #Timer1MenuN,d0
  2758.         lib    Intuition,ItemAddress
  2759.         move.l    d0,a0
  2760.         or.w    #CHECKED,$c(a0)
  2761.  
  2762. SetModes19:    cmp.b    #TIMER_B,PrefsTimer
  2763.         bne    SetModes20
  2764.         move.l    mlist,a0
  2765.         move.l    #Timer2MenuN,d0
  2766.         lib    Intuition,ItemAddress
  2767.         move.l    d0,a0
  2768.         or.w    #CHECKED,$c(a0)
  2769.  
  2770. SetModes20:    move.l    mlist,a0            ;UnCheck Confirm
  2771.         move.l    #ConfirmMenuN,d0
  2772.         lib    Intuition,ItemAddress
  2773.         move.l    d0,a0
  2774.         and.w    #~CHECKED,$c(a0)
  2775.  
  2776.         cmp.b    #1,PrefsConfirm
  2777.         bne    SetModes20.1
  2778.         move.l    mlist,a0
  2779.         move.l    #ConfirmMenuN,d0
  2780.         lib    Intuition,ItemAddress
  2781.         move.l    d0,a0
  2782.         or.w    #CHECKED,$c(a0)
  2783.  
  2784. SetModes20.1:    move.l    mlist,a0            ;UnCheck Wake0
  2785.         move.l    #Wake1MenuN,d0
  2786.         lib    Intuition,ItemAddress
  2787.         move.l    d0,a0
  2788.         and.w    #~CHECKED,$c(a0)
  2789.  
  2790.         move.l    mlist,a0            ;UnCheck Wake5
  2791.         move.l    #Wake2MenuN,d0
  2792.         lib    Intuition,ItemAddress
  2793.         move.l    d0,a0
  2794.         and.w    #~CHECKED,$c(a0)
  2795.  
  2796.         move.l    mlist,a0            ;UnCheck Wake10
  2797.         move.l    #Wake3MenuN,d0
  2798.         lib    Intuition,ItemAddress
  2799.         move.l    d0,a0
  2800.         and.w    #~CHECKED,$c(a0)
  2801.  
  2802.         move.l    mlist,a0            ;UnCheck Wake15
  2803.         move.l    #Wake4MenuN,d0
  2804.         lib    Intuition,ItemAddress
  2805.         move.l    d0,a0
  2806.         and.w    #~CHECKED,$c(a0)
  2807.  
  2808.         move.l    mlist,a0            ;UnCheck Wake20
  2809.         move.l    #Wake5MenuN,d0
  2810.         lib    Intuition,ItemAddress
  2811.         move.l    d0,a0
  2812.         and.w    #~CHECKED,$c(a0)
  2813.  
  2814.         cmp.b    #0,PrefsWake
  2815.         bne    SetModes20.2
  2816.         move.l    mlist,a0
  2817.         move.l    #Wake1MenuN,d0
  2818.         lib    Intuition,ItemAddress
  2819.         move.l    d0,a0
  2820.         or.w    #CHECKED,$c(a0)
  2821.  
  2822. SetModes20.2:    cmp.b    #5,PrefsWake
  2823.         bne    SetModes20.3
  2824.         move.l    mlist,a0
  2825.         move.l    #Wake2MenuN,d0
  2826.         lib    Intuition,ItemAddress
  2827.         move.l    d0,a0
  2828.         or.w    #CHECKED,$c(a0)
  2829.  
  2830. SetModes20.3:    cmp.b    #10,PrefsWake
  2831.         bne    SetModes20.4
  2832.         move.l    mlist,a0
  2833.         move.l    #Wake3MenuN,d0
  2834.         lib    Intuition,ItemAddress
  2835.         move.l    d0,a0
  2836.         or.w    #CHECKED,$c(a0)
  2837.  
  2838. SetModes20.4:    cmp.b    #15,PrefsWake
  2839.         bne    SetModes20.5
  2840.         move.l    mlist,a0
  2841.         move.l    #Wake4MenuN,d0
  2842.         lib    Intuition,ItemAddress
  2843.         move.l    d0,a0
  2844.         or.w    #CHECKED,$c(a0)
  2845.  
  2846. SetModes20.5:    cmp.b    #20,PrefsWake
  2847.         bne    SetModes20.9
  2848.         move.l    mlist,a0
  2849.         move.l    #Wake5MenuN,d0
  2850.         lib    Intuition,ItemAddress
  2851.         move.l    d0,a0
  2852.         or.w    #CHECKED,$c(a0)
  2853.  
  2854. SetModes20.9:    lea.l    DatBuffer,a0
  2855.         move.l    DatStrGadBuf1,a1
  2856.         move.l    #32,d0
  2857.         lib    Exec,CopyMem
  2858.  
  2859.         tst.l    Window1
  2860.         beq    SetModes21
  2861.         tst.l    OptionIconify
  2862.         beq    SetModes21
  2863.         move.l    Window1,a0
  2864.         move.w    Alt1XPos,d0
  2865.         move.w    Alt1YPos,d1
  2866.         move.w    wd_Width(a0),d2
  2867.         move.w    wd_Height(a0),d3
  2868.         lib    Intuition,ChangeWindowBox
  2869.         bra    SetModes22
  2870. SetModes21:    move.l    Alt1XPos,NewWindow1
  2871.  
  2872. ;None of the below are allowed to assume the window is open, it might not
  2873. ;be!
  2874.  
  2875. SetModes22:    cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2876.         bne    SetModes23
  2877.  
  2878.         move.l    #SAMP_PERFSND,d0
  2879.         clr.l    d1
  2880.         lib    Voice,PickSampler
  2881.  
  2882. SetModes23:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2883.         bne    SetModes24
  2884.  
  2885.         move.l    #SAMP_SNDMSTR,d0
  2886.         clr.l    d1
  2887.         lib    Voice,PickSampler
  2888.  
  2889.  
  2890. SetModes24:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2891.         bne    SetModes25
  2892.  
  2893.         move.l    #SAMP_DSS8,d0
  2894.         clr.l    d1
  2895.         move.b    PrefsGain,d1
  2896.         lib    Voice,PickSampler
  2897.  
  2898. SetModes25:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2899.         bne    SetModes26
  2900.  
  2901.         move.l    #SAMP_GENERIC,d0
  2902.         clr.l    d1
  2903.         lib    Voice,PickSampler
  2904.  
  2905. SetModes26:    cmp.b    #CHANNEL_LEFT,PrefsChannel
  2906.         bne    SetModes27
  2907.  
  2908.         move.l    #CHANNEL_LEFT,d0
  2909.         lib    Voice,PickChannel
  2910.  
  2911. SetModes27:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2912.         bne    SetModes28
  2913.  
  2914.         move.l    #CHANNEL_RIGHT,d0
  2915.         lib    Voice,PickChannel
  2916.  
  2917. SetModes28:    cmp.b    #INPUT_MIC,PrefsInput
  2918.         bne    SetModes29
  2919.  
  2920.         move.l    #INPUT_MIC,d0
  2921.         lib    Voice,PickInput
  2922.  
  2923. SetModes29:    cmp.b    #INPUT_LINE,PrefsInput
  2924.         bne    SetModes30
  2925.  
  2926.         move.l    #INPUT_LINE,d0
  2927.         lib    Voice,PickInput
  2928.  
  2929. SetModes30:    cmp.b    #TIMER_A,PrefsTimer
  2930.         bne    SetModes31
  2931.  
  2932.         move.l    #TIMER_A,d0
  2933.         lib    Voice,PickTimer
  2934.  
  2935. SetModes31:    cmp.b    #TIMER_B,PrefsTimer
  2936.         bne    SetModes32
  2937.  
  2938.         move.l    #TIMER_B,d0
  2939.         lib    Voice,PickTimer
  2940.  
  2941. SetModes32:
  2942.  
  2943. SetModes_OUT:    bsr    AddGads
  2944.         rts
  2945.  
  2946. ;Here we do some 'patches' when the window isn't open and then do the
  2947. ;normal stuff that needs to be done.
  2948.  
  2949. SetModes_OUT2:    lea.l    DatBuffer,a0
  2950.         move.l    a0,DatStrGadBuf1
  2951.         bra    SetModes22
  2952.  
  2953. CheckModes:    tst.l    Window1
  2954.         beq    CheckModes_OUT
  2955.         move.l    OnOffGad1,a0
  2956.         move.w    gg_Flags(a0),d0
  2957.         clr.b    PrefsOnOff
  2958.         and.w    #SELECTED,d0
  2959.         cmp.w    #SELECTED,d0
  2960.         bne    CheckModes1
  2961.         move.b    #$01,PrefsOnOff
  2962.  
  2963. CheckModes1:    move.l    DatStrGadBuf1,a0
  2964.         lea.l    DatBuffer,a1
  2965.         move.l    #32,d0
  2966.         lib    Exec,CopyMem
  2967.  
  2968.         tst.l    Window1
  2969.         beq    CheckModes_OUT
  2970.         move.l    Window1,a0
  2971.         move.l    wd_LeftEdge(a0),Alt1XY
  2972. CheckModes_OUT:    rts
  2973.  
  2974. RemGads:    tst.l    Window1
  2975.         beq    RemGads_OUT
  2976.         move.l    Window1,a0
  2977.         lea.l    glist,a1
  2978.         sub.l    a2,a2
  2979.         move.l    #-1,d0
  2980.         lib    Intuition,RemoveGList
  2981. RemGads_OUT:    rts
  2982.  
  2983. AddGads:    tst.l    Window1
  2984.         beq    AddGads_OUT
  2985.         move.l    Window1,a0
  2986.         lea.l    glist,a1
  2987.         sub.l    a2,a2
  2988.         move.l    #-1,d0
  2989.         move.l    #-1,d1
  2990.         lib    Intuition,AddGList
  2991.  
  2992.         lea.l    glist,a0
  2993.         move.l    Window1,a1
  2994.         sub.l    a2,a2
  2995.         move.l    #-1,d0
  2996.         lib    Intuition,RefreshGList
  2997.  
  2998.         move.l    GainGad1,a0
  2999.         move.l    Window1,a1
  3000.         sub.l    a2,a2
  3001.         lea.l    GainGadTagList,a3
  3002.         lib    GadTools,GT_SetGadgetAttrsA
  3003.  
  3004.         move.l    Window1,a0
  3005.         sub.l    a1,a1
  3006.         lib    GadTools,GT_RefreshWindow
  3007. AddGads_OUT:    rts
  3008.  
  3009. RemGads2:    tst.l    Window2
  3010.         beq    RemGads2_OUT
  3011.         move.l    Window2,a0
  3012.         lea.l    glist2,a1
  3013.         sub.l    a2,a2
  3014.         move.l    #-1,d0
  3015.         lib    Intuition,RemoveGList
  3016. RemGads2_OUT:    rts
  3017.  
  3018. AddGads2:    tst.l    Window2
  3019.         beq    AddGads2_OUT
  3020.         move.l    Window2,a0
  3021.         lea.l    glist2,a1
  3022.         sub.l    a2,a2
  3023.         move.l    #-1,d0
  3024.         move.l    #-1,d1
  3025.         lib    Intuition,AddGList
  3026.  
  3027.         lea.l    glist2,a0
  3028.         move.l    Window2,a1
  3029.         sub.l    a2,a2
  3030.         move.l    #-1,d0
  3031.         lib    Intuition,RefreshGList
  3032.  
  3033.         move.l    Window2,a0
  3034.         sub.l    a1,a1
  3035.         lib    GadTools,GT_RefreshWindow
  3036. AddGads2_OUT:    rts
  3037.  
  3038. RemGads4:    tst.l    Window4
  3039.         beq    RemGads4_OUT
  3040.         move.l    Window4,a0
  3041.         lea.l    glist4,a1
  3042.         sub.l    a2,a2
  3043.         move.l    #-1,d0
  3044.         lib    Intuition,RemoveGList
  3045. RemGads4_OUT:    rts
  3046.  
  3047. AddGads4:    tst.l    Window4
  3048.         beq    AddGads4_OUT
  3049.         move.l    Window4,a0
  3050.         lea.l    glist4,a1
  3051.         sub.l    a2,a2
  3052.         move.l    #-1,d0
  3053.         move.l    #-1,d1
  3054.         lib    Intuition,AddGList
  3055.  
  3056.         lea.l    glist4,a0
  3057.         move.l    Window4,a1
  3058.         sub.l    a2,a2
  3059.         move.l    #-1,d0
  3060.         lib    Intuition,RefreshGList
  3061.  
  3062.         move.l    Window4,a0
  3063.         sub.l    a1,a1
  3064.         lib    GadTools,GT_RefreshWindow
  3065. AddGads4_OUT:    rts
  3066.  
  3067. ;Abort timer request
  3068.  
  3069. ClearTimer:    move.l    TIORequest,a1
  3070.         lib    Exec,AbortIO
  3071.         tst.l    d0
  3072.         beq    ClearTimer1
  3073.         move.l    TRPort,a0
  3074.         lib    Exec,GetMsg
  3075. ClearTimer1:    move.l    TIORequest,a1
  3076.         lib    Exec,WaitIO
  3077.         rts
  3078.  
  3079. ;Send timer request
  3080.  
  3081. Waiter:        move.l    TIORequest,a1
  3082.         move.w    #TR_ADDREQUEST,IO_COMMAND(a1)
  3083.         move.l    Time,IOTV_TIME(a1)
  3084.         move.l    #2,IOTV_TIME+4(a1)    ;just in case secs=0
  3085.         lib    Exec,SendIO
  3086.         rts
  3087.  
  3088. Quit:        tst.w    Saved
  3089.         bne    ShutDown
  3090.         bsr    RemVTask1
  3091.         bsr    SleepPointer
  3092.         bsr    MenusOff
  3093.         bsr    RemGads
  3094.  
  3095.         lea.l    QuitTxt1,a1
  3096.         lea.l    OKTxt,a2
  3097.         lea.l    CancelTxt,a3
  3098.         bsr    DoAutoRequest
  3099.         tst.l    d0
  3100.         bne    Quit2
  3101.         bsr    AddGads
  3102.         bsr    MenusOn
  3103.         bsr    NormalPointer
  3104.         bsr    AddVTask
  3105.         bra    Window1IDCMP
  3106.  
  3107. Quit2:        bsr    MenusOn
  3108.         bsr    NormalPointer
  3109.         bsr    AddGads
  3110.         bsr    AddVTask
  3111.         bra    ShutDown
  3112.  
  3113. ShutDown:    bsr    RemVTask1
  3114.         bsr    UnLockPubScr
  3115.  
  3116. ShutDown9900:    tst.w    TimerOpen
  3117.         beq    ShutDown9800
  3118.         bsr    ClearTimer
  3119.         move.l    TIORequest,a1
  3120.         lib    Exec,CloseDevice
  3121.         clr.w    TimerOpen
  3122.  
  3123. ShutDown9800:    move.l    TIORequest,a0
  3124.         lib    Exec,DeleteIORequest
  3125.  
  3126.         tst.l    TRPort
  3127.         beq    ShutDown8900
  3128.  
  3129.         lib    Exec,Forbid            ;Remove all
  3130.         move.l    TRPort,a2            ;pending messages
  3131.  
  3132. ClearTRPort:    move.l    a2,a0
  3133.         flib    Exec,GetMsg
  3134.         tst.l    d0
  3135.         beq    ClearTRPort2
  3136.         move.l    d0,a1
  3137.         flib    Exec,ReplyMsg
  3138.         bra    ClearTRPort
  3139. ClearTRPort2:    move.l    TRPort,a0
  3140.         flib    Exec,DeleteMsgPort
  3141.         flib    Exec,Permit
  3142.  
  3143. ShutDown8900:    tst.l    CXBroker1
  3144.         beq    ShutDown8800
  3145.  
  3146.         lib    Exec,Forbid            ;Remove all
  3147.         move.l    CXPort,a2            ;pending messages
  3148.  
  3149. ClearCX1:    move.l    a2,a0
  3150.         flib    Exec,GetMsg
  3151.         tst.l    d0
  3152.         beq    ClearCX2
  3153.         move.l    d0,a1
  3154.         flib    Exec,ReplyMsg
  3155.         bra    ClearCX1
  3156. ClearCX2:    move.l    CXBroker1,a0
  3157.         lib    Commodities,DeleteCxObjAll
  3158.         lib    Exec,Permit
  3159.  
  3160. ShutDown8800:    bsr    CloseWin1
  3161.         bsr    CloseWin2
  3162.         bsr    CloseWin3
  3163.         bsr    CloseWin4
  3164.         bsr    Clean2.0Magic
  3165.  
  3166. ShutDown8000:    move.l    PrefsFile,d1
  3167.         beq    ShutDown7000
  3168.         lib    Dos,Close
  3169.  
  3170. ShutDown7000:    tst.l    NILFile
  3171.         beq    ShutDown6000
  3172.         move.l    NILFile,d1
  3173.         lib    Dos,Close
  3174.  
  3175. ShutDown6000:    tst.l    DiskObject
  3176.         beq    ShutDown5000
  3177.         move.l    DiskObject,a0
  3178.         lib    Icon,FreeDiskObject
  3179.  
  3180. ShutDown5000:    move.l    OldLock,d1
  3181.         beq    ShutDown4050
  3182.         lib    Dos,CurrentDir
  3183.  
  3184. ShutDown4050:    move.l    WBMsg,d2
  3185.         beq    ShutDown3000
  3186.         lib    Exec,Forbid
  3187.         move.l    d2,a1
  3188.         flib    Exec,ReplyMsg
  3189.  
  3190. ShutDown3000:    move.l    RDArgs1,d1
  3191.         beq    ShutDown2500
  3192.         lib    Dos,FreeArgs
  3193.  
  3194. ShutDown2500:    tst.l    AslReq
  3195.         beq    ShutDown2000
  3196.         move.l    AslReq,a0
  3197.         lib    Asl,FreeFileRequest
  3198.  
  3199. ShutDown2000:    move.l    VoicePort,a0        ;Messages cleared earlier
  3200.         lib    Exec,DeleteMsgPort
  3201.  
  3202.         move.l    CXPort,a0        ;Messages cleared earlier
  3203.         lib    Exec,DeleteMsgPort
  3204.  
  3205.         move.l    ARexxPort,a1            ;Remove possible
  3206.         cmp.l    #$00,a1                ;ports from lists
  3207.         beq    ShutDown1000            ;and then delete
  3208.         lib    Exec,RemPort            ;the ports
  3209.  
  3210.         flib    Exec,Forbid            ;Remove all
  3211.         move.l    ARexxPort,a2            ;pending messages
  3212.  
  3213. ClearARexx1:    move.l    a2,a0
  3214.         flib    Exec,GetMsg
  3215.         tst.l    d0
  3216.         beq    ClearARexx2
  3217.         move.l    d0,a1
  3218.         move.l    #RC_FATAL,RESULT1(a1)        ;Fail all requests
  3219.         flib    Exec,ReplyMsg
  3220.         bra    ClearARexx1
  3221. ClearARexx2:    move.l    ARexxPort,a0
  3222.         flib    Exec,DeleteMsgPort
  3223.         flib    Exec,Permit
  3224.  
  3225. ShutDown1000:    closlib Voice
  3226.         closlib    Commodities
  3227.         closlib Icon
  3228.         closlib Intuition
  3229.         closlib GadTools
  3230.         closlib    Asl
  3231.         closlib    Utility
  3232.         closlib Dos
  3233.  
  3234.         move.l    OurTask,a1        ;reset task pri after
  3235.         clr.l    d0            ;voice.lib has been
  3236.         lib    Exec,SetTaskPri        ;opened and closed
  3237.  
  3238.         pull    d2-d7/a2-a6
  3239.         clr.l    d0
  3240.         rts
  3241.  
  3242. ;CheckIDCMP gets messages from keyboard (CTRL_C/D/E), Intuition and
  3243. ;voice.library, commodities.library and ARexx
  3244. ;
  3245. ;Give it the window structure in a0
  3246.  
  3247. CheckIDCMP:    clr.l    d1
  3248.         clr.l    d0
  3249.         cmp.l    #0,a0            ;Window open?
  3250.         beq    CheckIDCMP1        ;Nope ->
  3251.         move.l    $56(a0),a2        ;Get window's port
  3252.         move.b    MP_SIGBIT(a2),d1    ;IntuiMessages signals
  3253.         bset.l    d1,d0
  3254. CheckIDCMP1:    clr.l    d1            ;Set signals for
  3255.         move.l    VoicePort,a0        ;voice.library
  3256.         move.b    MP_SIGBIT(a0),d1
  3257.         bset.l    d1,d0
  3258.         clr.l    d1
  3259.         move.l    CXPort,a0        ;commodities.library
  3260.         move.b    MP_SIGBIT(a0),d1
  3261.         bset.l    d1,d0
  3262.         clr.l    d1
  3263.         move.l    ARexxPort,a0        ;ARexx
  3264.         move.b    MP_SIGBIT(a0),d1
  3265.         bset.l    d1,d0
  3266.         clr.l    d1
  3267.         move.l    TRPort,a0        ;timer.device
  3268.         move.b    MP_SIGBIT(a0),d1
  3269.         bset.l    d1,d0
  3270.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  3271.         bset.l    #SIGBREAKB_CTRL_D,d0    ;and CTRL_D
  3272.         bset.l    #SIGBREAKB_CTRL_E,d0    ;and CTRL_E
  3273.         lib    Exec,Wait
  3274.  
  3275.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  3276.         beq    Break            ;go break
  3277.         cmp.l    #SIGBREAKF_CTRL_D,d0    ;If CTRL_D
  3278.         bne    CheckIDCMP2        ;inform about it
  3279.         move.l    #1,d0
  3280.         rts
  3281. CheckIDCMP2:    cmp.l    #SIGBREAKF_CTRL_E,d0    ;If CTRL_E
  3282.         bne    CheckIDCMP3        ;inform about it
  3283.         move.l    #2,d0
  3284.         rts
  3285. CheckIDCMP3:    move.l    VoicePort,a0        ;If voice.library
  3286.         move.b    MP_SIGBIT(a0),d1
  3287.         btst    d1,d0
  3288.         bne    C3GetMsg1
  3289.  
  3290.         move.l    CXPort,a0        ;If commodities.library
  3291.         move.b    MP_SIGBIT(a0),d1
  3292.         btst    d1,d0
  3293.         bne    C4GetMsg1
  3294.  
  3295.         move.l    TRPort,a0        ;If commodities.library
  3296.         move.b    MP_SIGBIT(a0),d1
  3297.         btst    d1,d0
  3298.         bne    C5GetMsg1
  3299.  
  3300.         move.l    ARexxPort,a0        ;If ARexx
  3301.         move.b    MP_SIGBIT(a0),d1
  3302.         btst    d1,d0
  3303.         beq    C2GetMsg1
  3304.  
  3305.         bsr    DoARexx            ;Go do ARexx magic
  3306.         rts
  3307.  
  3308. C2GetMsg1:    move.l    a2,a0            ;If Intuition
  3309.         lib    GadTools,GT_GetIMsg
  3310.         tst.l    d0
  3311.         beq    C2GetMsg2
  3312.     
  3313.         move.l    d0,a1 
  3314.         move.l    im_Class(a1),d2        ;answers with Class in d2,
  3315.         move.w    im_Code(a1),d3        ;Code in d3 and
  3316.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  3317.         move.l    im_IAddress(a1),a5    ;IAddress in a5
  3318.         lib    GadTools,GT_ReplyIMsg
  3319.         bra    C2GetMsg1
  3320. C2GetMsg2:    move.l    #-1,d0
  3321.         rts
  3322.  
  3323. C3GetMsg1:    move.l    VoicePort,a0
  3324.         lib    Exec,GetMsg
  3325.         tst.l    d0
  3326.         beq    C3GetMsg2
  3327.     
  3328.         move.l    d0,a1
  3329.         move.l    im_Class(a1),d2        ;Class in d2 and
  3330.         move.w    im_Code(a1),d3        ;Code in d3
  3331.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  3332.  
  3333.         lib    Exec,ReplyMsg
  3334.         bra    C3GetMsg1
  3335. C3GetMsg2:    move.l    #3,d0
  3336.         rts
  3337.  
  3338. C4GetMsg1:    move.l    CXPort,a0
  3339.         lib    Exec,GetMsg
  3340.         tst.l    d0
  3341.         beq    C4GetMsg_OUT
  3342.  
  3343.         move.l    d0,a2            ;Message in a2
  3344.  
  3345.         move.l    a2,a0
  3346.         lib    Commodities,CxMsgType
  3347.         move.l    d0,d2            ;Type in d2
  3348.  
  3349.         move.l    a2,a0
  3350.         lib    Commodities,CxMsgID
  3351.         move.l    d0,d3            ;ID in d3
  3352.  
  3353.         move.l    a2,a1
  3354.         lib    Exec,ReplyMsg
  3355.  
  3356.         bsr    CX        ;Go do magic stuff
  3357.         tst.l    d0
  3358.         bne    C4GetMsg1    ;Loop all messages
  3359.         rts
  3360.  
  3361. C4GetMsg_OUT:    move.l    #4,d0        ;Return as CX
  3362.         rts
  3363.  
  3364. C5GetMsg1:    move.l    TRPort,a0
  3365.         lib    Exec,GetMsg
  3366.         tst.l    d0
  3367.         beq    C5GetMsg_OUT
  3368.  
  3369.         clr.w    Awake
  3370.  
  3371. C5GetMsg_OUT:    move.l    #4,d0
  3372.         rts
  3373.  
  3374. ;Newer MenuNull subroutine
  3375.  
  3376. MenuNull:    move.w    d3,d0
  3377.         and.w    #$1f,d0
  3378.         move.w    d0,d6
  3379.         move.w    d3,d0
  3380.         lsr.w    #5,d0
  3381.         move.w    d0,d1
  3382.         and.w    #$3f,d0
  3383.         move.w    d0,d5
  3384.         lsr.w    #6,d1
  3385.         move.w    d1,d4
  3386.         rts
  3387.  
  3388. ;ARexx interface
  3389.  
  3390. DoARexx:    move.l    ARexxPort,a0
  3391.         lib    Exec,GetMsg
  3392.  
  3393.         move.l    #4,d2            ;answer to Window1IDCMP
  3394.         tst.l    d0
  3395.         beq    DoARexx_OUT
  3396.  
  3397.         move.l    d0,a5
  3398.         cmp.l    #RXCOMM,ACTION(a5)
  3399.         bne    DoARexxReply
  3400.  
  3401.         tst.l    Window2        ;Don't do ARexx while other
  3402.         bne    DoARexxFail    ;windows are open!
  3403.         tst.l    Window3
  3404.         bne    DoARexxFail
  3405.  
  3406.         lea.l    RexxFront,a0
  3407.         move.l    ARG0(a5),a1
  3408.         bsr    CmpStrings
  3409.         bne    DoRexxFront
  3410.  
  3411.         lea.l    RexxBack,a0
  3412.         move.l    ARG0(a5),a1
  3413.         bsr    CmpStrings
  3414.         bne    DoRexxBack
  3415.  
  3416.         lea.l    RexxZoom,a0
  3417.         move.l    ARG0(a5),a1
  3418.         bsr    CmpStrings
  3419.         bne    DoRexxZoom
  3420.  
  3421.         lea.l    RexxHide,a0
  3422.         move.l    ARG0(a5),a1
  3423.         bsr    CmpStrings
  3424.         bne    DoRexxHide
  3425.  
  3426.         lea.l    RexxShow,a0
  3427.         move.l    ARG0(a5),a1
  3428.         bsr    CmpStrings
  3429.         bne    DoRexxShow
  3430.  
  3431.         lea.l    RexxOn,a0
  3432.         move.l    ARG0(a5),a1
  3433.         bsr    CmpStrings
  3434.         bne    DoRexxOn
  3435.  
  3436.         lea.l    RexxOff,a0
  3437.         move.l    ARG0(a5),a1
  3438.         bsr    CmpStrings
  3439.         bne    DoRexxOff
  3440.  
  3441.         lea.l    RexxQuit,a0
  3442.         move.l    ARG0(a5),a1
  3443.         bsr    CmpStrings
  3444.         bne    DoRexxQuit
  3445.  
  3446.         lea.l    RexxPerfSnd,a0
  3447.         move.l    ARG0(a5),a1
  3448.         bsr    CmpStrings
  3449.         bne    DoRexxPerfSnd
  3450.  
  3451.         lea.l    RexxSndMstr,a0
  3452.         move.l    ARG0(a5),a1
  3453.         bsr    CmpStrings
  3454.         bne    DoRexxSndMstr
  3455.  
  3456.         lea.l    RexxDSS8,a0
  3457.         move.l    ARG0(a5),a1
  3458.         bsr    CmpStrings
  3459.         bne    DoRexxDSS8
  3460.  
  3461.         lea.l    RexxGeneric,a0
  3462.         move.l    ARG0(a5),a1
  3463.         bsr    CmpStrings
  3464.         bne    DoRexxGeneric
  3465.  
  3466.         lea.l    RexxResLo,a0
  3467.         move.l    ARG0(a5),a1
  3468.         bsr    CmpStrings
  3469.         bne    DoRexxResLo
  3470.  
  3471.         lea.l    RexxResHi,a0
  3472.         move.l    ARG0(a5),a1
  3473.         bsr    CmpStrings
  3474.         bne    DoRexxResHi
  3475.  
  3476.         lea.l    RexxLowest,a0
  3477.         move.l    ARG0(a5),a1
  3478.         bsr    CmpStrings
  3479.         bne    DoRexxLowest
  3480.  
  3481.         lea.l    RexxLower,a0
  3482.         move.l    ARG0(a5),a1
  3483.         bsr    CmpStrings
  3484.         bne    DoRexxLower
  3485.  
  3486.         lea.l    RexxLow,a0
  3487.         move.l    ARG0(a5),a1
  3488.         bsr    CmpStrings
  3489.         bne    DoRexxLow
  3490.  
  3491.         lea.l    RexxNormal,a0
  3492.         move.l    ARG0(a5),a1
  3493.         bsr    CmpStrings
  3494.         bne    DoRexxNormal
  3495.  
  3496.         lea.l    RexxHigh,a0
  3497.         move.l    ARG0(a5),a1
  3498.         bsr    CmpStrings
  3499.         bne    DoRexxHigh
  3500.  
  3501.         lea.l    RexxHigher,a0
  3502.         move.l    ARG0(a5),a1
  3503.         bsr    CmpStrings
  3504.         bne    DoRexxHigher
  3505.  
  3506.         lea.l    RexxEHigher,a0
  3507.         move.l    ARG0(a5),a1
  3508.         bsr    CmpStrings
  3509.         bne    DoRexxEHigher
  3510.  
  3511.         lea.l    RexxMaximum,a0
  3512.         move.l    ARG0(a5),a1
  3513.         bsr    CmpStrings
  3514.         bne    DoRexxMaximum
  3515.  
  3516.         lea.l    RexxLeft,a0
  3517.         move.l    ARG0(a5),a1
  3518.         bsr    CmpStrings
  3519.         bne    DoRexxLeft
  3520.  
  3521.         lea.l    RexxRight,a0
  3522.         move.l    ARG0(a5),a1
  3523.         bsr    CmpStrings
  3524.         bne    DoRexxRight
  3525.  
  3526.         lea.l    RexxLine,a0
  3527.         move.l    ARG0(a5),a1
  3528.         bsr    CmpStrings
  3529.         bne    DoRexxLine
  3530.  
  3531.         lea.l    RexxMic,a0
  3532.         move.l    ARG0(a5),a1
  3533.         bsr    CmpStrings
  3534.         bne    DoRexxMic
  3535.  
  3536.         lea.l    RexxGainUp,a0
  3537.         move.l    ARG0(a5),a1
  3538.         bsr    CmpStrings
  3539.         bne    DoRexxGainUp
  3540.  
  3541.         lea.l    RexxGainDown,a0
  3542.         move.l    ARG0(a5),a1
  3543.         bsr    CmpStrings
  3544.         bne    DoRexxGainDown
  3545.  
  3546.         lea.l    RexxTimerA,a0
  3547.         move.l    ARG0(a5),a1
  3548.         bsr    CmpStrings
  3549.         bne    DoRexxTimerA
  3550.  
  3551.         lea.l    RexxTimerB,a0
  3552.         move.l    ARG0(a5),a1
  3553.         bsr    CmpStrings
  3554.         bne    DoRexxTimerB
  3555.  
  3556.         lea.l    RexxConfirm,a0
  3557.         move.l    ARG0(a5),a1
  3558.         bsr    CmpStrings
  3559.         bne    DoRexxConf
  3560.  
  3561.         lea.l    RexxNoConfirm,a0
  3562.         move.l    ARG0(a5),a1
  3563.         bsr    CmpStrings
  3564.         bne    DoRexxNoConf
  3565.  
  3566.         lea.l    RexxWake0,a0
  3567.         move.l    ARG0(a5),a1
  3568.         bsr    CmpStrings
  3569.         bne    DoRexxWake0
  3570.  
  3571.         lea.l    RexxWake5,a0
  3572.         move.l    ARG0(a5),a1
  3573.         bsr    CmpStrings
  3574.         bne    DoRexxWake5
  3575.  
  3576.         lea.l    RexxWake10,a0
  3577.         move.l    ARG0(a5),a1
  3578.         bsr    CmpStrings
  3579.         bne    DoRexxWake10
  3580.  
  3581.         lea.l    RexxWake15,a0
  3582.         move.l    ARG0(a5),a1
  3583.         bsr    CmpStrings
  3584.         bne    DoRexxWake15
  3585.  
  3586.         lea.l    RexxWake20,a0
  3587.         move.l    ARG0(a5),a1
  3588.         bsr    CmpStrings
  3589.         bne    DoRexxWake20
  3590.  
  3591.         move.l    ARG0(a5),a1
  3592.         cmp.b    #'K',(a1)+
  3593.         bne    DoARexx2
  3594.         cmp.b    #'E',(a1)+
  3595.         bne    DoARexx2
  3596.         cmp.b    #'Y',(a1)+
  3597.         bne    DoARexx2
  3598.         cmp.b    #' ',(a1)+
  3599.         beq    DoRexxKeyInput
  3600.  
  3601. DoARexx2:    move.l    ARG0(a5),a1
  3602.         cmp.b    #'L',(a1)+
  3603.         bne    DoARexxFail
  3604.         cmp.b    #'O',(a1)+
  3605.         bne    DoARexxFail
  3606.         cmp.b    #'A',(a1)+
  3607.         bne    DoARexxFail
  3608.         cmp.b    #'D',(a1)+
  3609.         bne    DoARexxFail
  3610.         cmp.b    #' ',(a1)+
  3611.         beq    DoRexxLoad
  3612.  
  3613. DoARexxFail:    move.l    #RC_FATAL,RESULT1(a5)
  3614.         move.l    #4,d2
  3615.         bra    DoARexxReply
  3616.  
  3617. DoARexxOK:    move.l    #RC_OK,RESULT1(a5)
  3618. DoARexxReply:    move.l    a5,a1
  3619.         lib    Exec,ReplyMsg
  3620. DoARexx_OUT:    move.l    d2,d0
  3621.         rts
  3622.  
  3623.  
  3624. DoRexxFront:    push    a5
  3625.         bsr    ToFront
  3626.         move.l    #4,d2
  3627.         pull    a5
  3628.         bra    DoARexxOK
  3629.  
  3630. DoRexxBack:    push    a5
  3631.         bsr    ToBack
  3632.         move.l    #4,d2
  3633.         pull    a5
  3634.         bra    DoARexxOK
  3635.  
  3636. DoRexxZoom:    push    a5
  3637.         bsr    Zoom
  3638.         move.l    #4,d2
  3639.         pull    a5
  3640.         bra    DoARexxOK
  3641.  
  3642. DoRexxHide:    push    a5
  3643.         bsr    DoCXDisappear
  3644.         move.l    #4,d2
  3645.         pull    a5
  3646.         bra    DoARexxOK
  3647.  
  3648. DoRexxShow:    push    a5
  3649.         bsr    DoCXAppear
  3650.         move.l    #4,d2
  3651.         pull    a5
  3652.         bra    DoARexxOK
  3653.  
  3654. DoRexxOn:    tst.w    DisActive
  3655.         bne    DoARexxFail
  3656.         push    a5
  3657.         bsr    CLITypeOn
  3658.         pull    a5
  3659.         move.l    #4,d2
  3660.         bra    DoARexxOK
  3661.  
  3662. DoRexxOff:    tst.w    DisActive
  3663.         bne    DoARexxFail
  3664.         push    a5
  3665.         bsr    CLITypeOff
  3666.         pull    a5
  3667.         move.l    #4,d2
  3668.         bra    DoARexxOK
  3669.  
  3670. DoRexxQuit:    clr.l    d2
  3671.         bra    DoARexxOK
  3672.  
  3673. DoRexxPerfSnd:    push    a5
  3674.         bsr    SetSamp1
  3675.         bsr    SetModes
  3676.         pull    a5
  3677.         move.l    #4,d2
  3678.         bra    DoARexxOK
  3679.  
  3680. DoRexxSndMstr:    push    a5
  3681.         bsr    SetSamp2
  3682.         bsr    SetModes
  3683.         pull    a5
  3684.         move.l    #4,d2
  3685.         bra    DoARexxOK
  3686.  
  3687. DoRexxDSS8:    push    a5
  3688.         bsr    SetSamp3
  3689.         bsr    SetModes
  3690.         pull    a5
  3691.         move.l    #4,d2
  3692.         bra    DoARexxOK
  3693.  
  3694. DoRexxGeneric:    push    a5
  3695.         bsr    SetSamp4
  3696.         bsr    SetModes
  3697.         pull    a5
  3698.         move.l    #4,d2
  3699.         bra    DoARexxOK
  3700.  
  3701. DoRexxResLo:    push    a5
  3702.         bsr    SetResLo
  3703.         bsr    SetModes
  3704.         pull    a5
  3705.         move.l    #4,d2
  3706.         bra    DoARexxOK
  3707.  
  3708. DoRexxResHi:    push    a5
  3709.         bsr    SetResHi
  3710.         bsr    SetModes
  3711.         pull    a5
  3712.         move.l    #4,d2
  3713.         bra    DoARexxOK
  3714.  
  3715. DoRexxLowest:    push    a5
  3716.         bsr    SetAccLowest
  3717.         bsr    SetModes
  3718.         pull    a5
  3719.         move.l    #4,d2
  3720.         bra    DoARexxOK
  3721.  
  3722. DoRexxLower:    push    a5
  3723.         bsr    SetAccLower
  3724.         bsr    SetModes
  3725.         pull    a5
  3726.         move.l    #4,d2
  3727.         bra    DoARexxOK
  3728.  
  3729. DoRexxLow:    push    a5
  3730.         bsr    SetAccLow
  3731.         bsr    SetModes
  3732.         pull    a5
  3733.         move.l    #4,d2
  3734.         bra    DoARexxOK
  3735.  
  3736. DoRexxNormal:    push    a5
  3737.         bsr    SetAccNormal
  3738.         bsr    SetModes
  3739.         pull    a5
  3740.         move.l    #4,d2
  3741.         bra    DoARexxOK
  3742.  
  3743. DoRexxHigh:    push    a5
  3744.         bsr    SetAccHigh
  3745.         bsr    SetModes
  3746.         pull    a5
  3747.         move.l    #4,d2
  3748.         bra    DoARexxOK
  3749.  
  3750. DoRexxHigher:    push    a5
  3751.         bsr    SetAccHigher
  3752.         bsr    SetModes
  3753.         pull    a5
  3754.         move.l    #4,d2
  3755.         bra    DoARexxOK
  3756.  
  3757. DoRexxEHigher:    push    a5
  3758.         bsr    SetAccEHigher
  3759.         bsr    SetModes
  3760.         pull    a5
  3761.         move.l    #4,d2
  3762.         bra    DoARexxOK
  3763.  
  3764. DoRexxMaximum:    push    a5
  3765.         bsr    SetAccMaximum
  3766.         bsr    SetModes
  3767.         pull    a5
  3768.         move.l    #4,d2
  3769.         bra    DoARexxOK
  3770.  
  3771. DoRexxLeft:    push    a5
  3772.         bsr    SetLeft
  3773.         bsr    SetModes
  3774.         pull    a5
  3775.         move.l    #4,d2
  3776.         bra    DoARexxOK
  3777.  
  3778. DoRexxRight:    push    a5
  3779.         bsr    SetRight
  3780.         bsr    SetModes
  3781.         pull    a5
  3782.         move.l    #4,d2
  3783.         bra    DoARexxOK
  3784.  
  3785. DoRexxLine:    push    a5
  3786.         bsr    SetLine
  3787.         bsr    SetModes
  3788.         pull    a5
  3789.         move.l    #4,d2
  3790.         bra    DoARexxOK
  3791.  
  3792. DoRexxMic:    push    a5
  3793.         bsr    SetMic
  3794.         bsr    SetModes
  3795.         pull    a5
  3796.         move.l    #4,d2
  3797.         bra    DoARexxOK
  3798.  
  3799. DoRexxGainUp:    push    a5
  3800.         bsr    GainUp
  3801.         pull    a5
  3802.         move.l    #4,d2
  3803.         bra    DoARexxOK
  3804.  
  3805. DoRexxGainDown:    push    a5
  3806.         bsr    GainDown
  3807.         pull    a5
  3808.         move.l    #4,d2
  3809.         bra    DoARexxOK
  3810.  
  3811. DoRexxTimerA:    push    a5
  3812.         bsr    SetTimerA
  3813.         bsr    SetModes
  3814.         pull    a5
  3815.         move.l    #4,d2
  3816.         bra    DoARexxOK
  3817.  
  3818. DoRexxTimerB:    push    a5
  3819.         bsr    SetTimerB
  3820.         bsr    SetModes
  3821.         pull    a5
  3822.         move.l    #4,d2
  3823.         bra    DoARexxOK
  3824.  
  3825. DoRexxConf:    push    a5
  3826.         move.b    #1,PrefsConfirm
  3827.         bsr    SetModes
  3828.         pull    a5
  3829.         move.l    #4,d2
  3830.         bra    DoARexxOK
  3831.  
  3832. DoRexxNoConf:    push    a5
  3833.         clr.b    PrefsConfirm
  3834.         bsr    SetModes
  3835.         pull    a5
  3836.         move.l    #4,d2
  3837.         bra    DoARexxOK
  3838.  
  3839. DoRexxWake0:    push    a5
  3840.         bsr    SetWake0
  3841.         bsr    SetModes
  3842.         pull    a5
  3843.         move.l    #4,d2
  3844.         bra    DoARexxOK
  3845.  
  3846. DoRexxWake5:    push    a5
  3847.         bsr    SetWake0
  3848.         move.b    #5,PrefsWake
  3849.         bsr    SetModes
  3850.         pull    a5
  3851.         move.l    #4,d2
  3852.         bra    DoARexxOK
  3853.  
  3854. DoRexxWake10:    push    a5
  3855.         bsr    SetWake10
  3856.         bsr    SetModes
  3857.         pull    a5
  3858.         move.l    #4,d2
  3859.         bra    DoARexxOK
  3860.  
  3861. DoRexxWake15:    push    a5
  3862.         bsr    SetWake15
  3863.         bsr    SetModes
  3864.         pull    a5
  3865.         move.l    #4,d2
  3866.         bra    DoARexxOK
  3867.  
  3868. DoRexxWake20:    push    a5
  3869.         bsr    SetWake20
  3870.         bsr    SetModes
  3871.         pull    a5
  3872.         move.l    #4,d2
  3873.         bra    DoARexxOK
  3874.  
  3875. DoRexxLoad:    push    a5
  3876.  
  3877.         move.l    a1,FromFile    ;Fake CLI Input :)
  3878.         bsr    Load
  3879.         bsr    AddVTask
  3880.  
  3881.         pull    a5
  3882.         move.l    #4,d2
  3883.         bra    DoARexxOK
  3884.  
  3885. DoRexxKeyInput:    move.l    a1,a0
  3886.         lea.l    StringBuffer,a1
  3887.         bsr    CopyStrs
  3888.  
  3889.         bsr    SendEvents
  3890.         move.l    #4,d2
  3891.         tst.l    IEvents
  3892.         beq    DoARexxFail
  3893.         clr.l    IEvents
  3894.         bra    DoARexxOK
  3895.  
  3896. ;SendEvents converts ARexx string to lower case and converts it into input
  3897. ;events and merges these events into the input chain.
  3898. ;
  3899. ;Inputs    StringBuffer = String to send
  3900.  
  3901. SendEvents:    lea.l    StringBuffer,a2
  3902.         bsr    MakeLowerCase
  3903.  
  3904. ;Convert string into Input Events
  3905.  
  3906.         move.l    #0,-(sp)
  3907.         pea    StringBuffer
  3908.         jsr    _InvertString
  3909.         add.l    #8,sp
  3910.         move.l    d0,IEvents
  3911.         beq    SendEvents2
  3912.  
  3913. ;Send Input Events
  3914.  
  3915.         move.l    IEvents,a0
  3916.         lib    Commodities,AddIEvents
  3917.  
  3918. ;Free Input Events
  3919.  
  3920.         move.l    IEvents,-(sp)
  3921.         jsr    _FreeIEvents
  3922.         add.l    #4,sp
  3923. SendEvents2:    rts
  3924.  
  3925. ;Compares two strings.
  3926. ;
  3927. ;INPUT
  3928. ;
  3929. ;A0 String 1
  3930. ;A1 String 2
  3931. ;
  3932. ;OUTPUT
  3933. ;
  3934. ;D0 = 0 if not same
  3935. ;
  3936. ;BUGS
  3937. ;
  3938. ;String 1 has to have NULL at end!
  3939. ;
  3940.  
  3941. CmpStrings:    bsr    GetLength
  3942.         move.l    d0,d4        ;length of string1 to d4
  3943.         push    a0
  3944.         move.l    a1,a0
  3945.         bsr    GetLength
  3946.         pull    a0
  3947.         cmp.l    d4,d0        ;length of string2 in d3
  3948.         bne    CmpStrings1.1
  3949. CmpStrings1:    tst.b    (a0)
  3950.         beq    CmpStrings2
  3951.         cmp.b    (a0)+,(a1)+
  3952.         beq    CmpStrings1
  3953. CmpStrings1.1:    clr.l    d0
  3954.         rts
  3955. CmpStrings2:    move.l    #-1,d0
  3956.         rts
  3957.  
  3958. ;Get length of text in given address
  3959. ;
  3960. ;Input a0 = Address of null terminated text string
  3961. ;
  3962. ;Result d0 = Length
  3963.  
  3964. GetLength:    push    a0
  3965.         clr.l    d0
  3966.         cmp.l    #$00,a0        ;fixes enforcer hit
  3967.         beq    GetLength_OUT
  3968. GetLength2:    add.l    #1,d0
  3969.         tst.b    (a0)+
  3970.         bne    GetLength2
  3971.         sub.l    #1,d0        ;don't include NULL
  3972. GetLength_OUT:    pull    a0
  3973.         rts
  3974.  
  3975. ;Inputs    a0 = ASCII number
  3976. ;Output    d0 = Hexadecimal number
  3977.  
  3978. ConvASCII:    clr.l    d0
  3979.         clr.l    d1
  3980.         cmp.b    #' ',(a0)
  3981.         bne    ConvASCII2
  3982.         add.l    #1,a0
  3983. ConvASCII2:    move.b    (a0),d1
  3984.         cmp.b    #'0',d1
  3985.         bcs    ConvASCII_OUT
  3986.         cmp.b    #'9',d1
  3987.         bhi    ConvASCII_OUT
  3988.         sub.b    #'0',d1
  3989.         mulu.w    #10,d0
  3990.         add.l    d1,d0
  3991.         add.l    #1,a0
  3992.         bra    ConvASCII2
  3993. ConvASCII_OUT:    rts
  3994.  
  3995. ;Inputs    a2 = Pointer to NULL terminated string to convert
  3996.  
  3997. MakeLowerCase:    tst.b    (a2)
  3998.         beq    MakeLowerCase3
  3999.         move.b    (a2),d0
  4000.         lib    Utility,ToLower
  4001.         move.b    d0,(a2)
  4002.  
  4003. MakeLowerCase2:    add.l    #1,a2
  4004.         bra    MakeLowerCase
  4005.  
  4006. MakeLowerCase3: rts
  4007.  
  4008. ;Copies bytes from a0 to a1 until NULL is reached or maximum amount of 
  4009. ;255 bytes is copied. Destination will include NULL
  4010. ;
  4011. ;Inputs    a0 = Source
  4012. ;    a1 = Destination
  4013.  
  4014. CopyStrs:    move.l    #255,d0
  4015.  
  4016. CopyStrs1:    tst.b    (a0)
  4017.         beq    CopyStrs_OUT
  4018.         move.b    (a0)+,(a1)+
  4019.         sub.l    #1,d0
  4020.         beq    CopyStrs_OUT
  4021.         bra    CopyStrs1
  4022. CopyStrs_OUT:    clr.b    (a1)
  4023.         rts
  4024.  
  4025. ;Joins path and filename together from ASL Requester.
  4026.  
  4027. MakeCmd:    move.l    AslReq,a0
  4028.         move.l    rf_Dir(a0),a1        ;Source 1
  4029.         move.l    rf_File(a0),a2        ;Source 2
  4030.  
  4031.         move.l    $22(a5),a0
  4032.         move.l    (a0),a3            ;Destination
  4033.  
  4034.         clr.l    d0
  4035.  
  4036. MakeCmd1:    tst.b    (a1)
  4037.         beq    MakeCmd2
  4038.         cmp.l    #GADLENG2-1,d0
  4039.         bcc    MakeCmd2
  4040.         move.b    (a1)+,(a3)+
  4041.         add.l    #1,d0
  4042.         bra    MakeCmd1
  4043.  
  4044. MakeCmd2:    cmp.b    #':',-1(a3)
  4045.         beq    MakeCmd3
  4046.         tst.b    -1(a3)
  4047.         beq    MakeCmd3
  4048.         move.b    #'/',(a3)+
  4049.  
  4050. MakeCmd3:    tst.b    (a2)
  4051.         beq    MakeCmd4
  4052.         cmp.l    #GADLENG2-1,d0
  4053.         bcc    MakeCmd3
  4054.         move.b    (a2)+,(a3)+
  4055.         add.l    #1,d0
  4056.         bra    MakeCmd3
  4057.  
  4058. MakeCmd4:    clr.b    (a3)        ;Add NULL to destination
  4059.         rts
  4060.  
  4061. SleepPointer:    tst.l    Window1
  4062.         beq    SleepPoint_OUT
  4063.         move.l    Window1,a0
  4064.         lea.l    ClockPointer1,a1
  4065.         move.l    #16,d0
  4066.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  4067.         move.l    #-6,d2
  4068.         move.l    #0,d3
  4069.         lib    Intuition,SetPointer
  4070. SleepPoint_OUT:    rts
  4071.  
  4072. NormalPointer:    tst.l    Window1
  4073.         beq    NormPoint_OUT
  4074.         move.l    Window1,a0
  4075.         lib    Intuition,ClearPointer
  4076. NormPoint_OUT:    rts
  4077.  
  4078. MenusOn:    tst.l    Window1
  4079.         beq    MenusOn_OUT
  4080.         move.l    Window1,a0
  4081.         move.l    mlist,a1
  4082.         lib    Intuition,SetMenuStrip
  4083. MenusOn_OUT:    rts
  4084.  
  4085. MenusOff:    tst.l    Window1
  4086.         beq    MenusOff_OUT
  4087.         move.l    Window1,a0
  4088.         lib    Intuition,ClearMenuStrip
  4089. MenusOff_OUT:    rts
  4090.  
  4091. ;Lock PublicScreen
  4092.  
  4093. LockPubScr:    move.l    OptPubScreen,a0
  4094.         lib    Intuition,LockPubScreen
  4095.         move.l    d0,PubScreen
  4096.         beq    LockPubScr_OUT
  4097.  
  4098. ;Set default sizes
  4099.  
  4100.         move.w    #62,Win1YSize
  4101.         move.w    #ShellTop+12*(10+INTERHEIGHT)+3*INTERHEIGHT,Win2YSize
  4102.         move.w    #30,Win3YSize
  4103.         move.w    #ShellTop+12*(10+INTERHEIGHT)+2*INTERHEIGHT,Win4YSize
  4104.  
  4105. ;Get some sizes
  4106.  
  4107.         move.l    PubScreen,a0
  4108.         move.b    sc_BarHeight(a0),d0
  4109.         add.b    #1,d0
  4110.         move.b    d0,BHeight+1
  4111.         move.w    BHeight,d5
  4112.         add.w    d5,SmallYSize
  4113.         add.w    d5,Win1YSize
  4114.         add.w    d5,Win2YSize
  4115.         add.w    d5,Win3YSize
  4116. LockPubScr_OUT: rts
  4117.  
  4118. UnLockPubScr:    tst.l    PubScreen
  4119.         beq    UnLPubScr_OUT
  4120.  
  4121.         sub.l    a0,a0
  4122.         move.l    PubScreen,a1
  4123.         lib    Intuition,UnlockPubScreen
  4124.         clr.l    PubScreen
  4125. UnLPubScr_OUT:    rts
  4126.  
  4127. DoLayOut:    bsr    UnLockPubScr
  4128.  
  4129.         bsr    LockPubScr
  4130.         tst.l    PubScreen
  4131.         beq    NoPubScreen
  4132.  
  4133. ;Get visualinfo
  4134.  
  4135.         move.l    PubScreen,a0
  4136.         sub.l    a1,a1
  4137.         lib    GadTools,GetVisualInfoA
  4138.         move.l    d0,vi
  4139.  
  4140. ;Make gadget stuff
  4141.  
  4142.         lea.l    glist,a0
  4143.         lib    GadTools,CreateContext
  4144.         move.l    d0,ContextGad
  4145.         beq    NoContextGad
  4146.  
  4147.         move.l    glist,a0
  4148.         lea.l    NGOnOffGad1,a1
  4149.         move.w    #ShellTop,gng_TopEdge(a1)
  4150.         add.w    d5,gng_TopEdge(a1)
  4151.         move.l    #CHECKBOX_KIND,d0
  4152.         move.l    vi,gng_VisualInfo(a1)
  4153.         lea.l    GadTagList,a2
  4154.         lib    GadTools,CreateGadgetA
  4155.  
  4156.         move.l    d0,OnOffGad1
  4157.         move.l    d0,a0
  4158.  
  4159.         lea.l    NGGainUGad,a1
  4160.         move.w    #ShellTop+1*(10+INTERHEIGHT),gng_TopEdge(a1)
  4161.         add.w    d5,gng_TopEdge(a1)
  4162.         move.l    #BUTTON_KIND,d0
  4163.         move.l    vi,gng_VisualInfo(a1)
  4164.         lea.l    GadTagList,a2
  4165.         lib    GadTools,CreateGadgetA
  4166.  
  4167.         move.l    d0,a0
  4168.         move.l    a0,GainUGad1
  4169.  
  4170.         lea.l    NGGainDGad,a1
  4171.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  4172.         add.w    d5,gng_TopEdge(a1)
  4173.         move.l    #BUTTON_KIND,d0
  4174.         move.l    vi,gng_VisualInfo(a1)
  4175.         lea.l    GadTagList,a2
  4176.         lib    GadTools,CreateGadgetA
  4177.  
  4178.         move.l    d0,a0
  4179.         move.l    a0,GainDGad1
  4180.  
  4181.         lea.l    NGGainGad,a1
  4182.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  4183.         add.w    d5,gng_TopEdge(a1)
  4184.         move.l    #NUMBER_KIND,d0
  4185.         move.l    vi,gng_VisualInfo(a1)
  4186.         lea.l    GainGadTagList,a2
  4187.         lib    GadTools,CreateGadgetA
  4188.  
  4189.         move.l    d0,a0
  4190.         move.l    a0,GainGad1
  4191.  
  4192.         lea.l    NGSaveGad,a1
  4193.         move.w    #OptionTop,gng_TopEdge(a1)
  4194.         add.w    d5,gng_TopEdge(a1)
  4195.         move.l    #BUTTON_KIND,d0
  4196.         move.l    vi,gng_VisualInfo(a1)
  4197.         lea.l    GadTagList,a2
  4198.         lib    GadTools,CreateGadgetA
  4199.  
  4200.         move.l    d0,a0
  4201.         move.l    a0,SaveGad1
  4202.  
  4203.         lea.l    NGQuitGad,a1
  4204.         move.w    #OptionTop,gng_TopEdge(a1)
  4205.         add.w    d5,gng_TopEdge(a1)
  4206.         move.l    #BUTTON_KIND,d0
  4207.         move.l    vi,gng_VisualInfo(a1)
  4208.         lea.l    GadTagList,a2
  4209.         lib    GadTools,CreateGadgetA
  4210.  
  4211.         move.l    d0,a0
  4212.         move.l    a0,QuitGad1
  4213.         or.w    #GRELRIGHT,gg_Flags(a0)
  4214.  
  4215.         lea.l    NGDatStrGad1,a1
  4216.         move.w    #ShellTop+28,gng_TopEdge(a1)
  4217.         add.w    d5,gng_TopEdge(a1)
  4218.         move.l    #STRING_KIND,d0
  4219.         move.l    vi,gng_VisualInfo(a1)
  4220.         lea.l    DatStrGadTagList,a2
  4221.         lib    GadTools,CreateGadgetA
  4222.  
  4223.         move.l    d0,DatStrGad1
  4224.         move.l    d0,a0
  4225.         move.l    $22(a0),a1
  4226.         move.l    (a1),DatStrGadBuf1
  4227.  
  4228.         lea.l    NGStatusGad,a1
  4229.         move.w    #ShellTop,gng_TopEdge(a1)
  4230.         add.w    d5,gng_TopEdge(a1)
  4231.         move.l    #TEXT_KIND,d0
  4232.         move.l    vi,gng_VisualInfo(a1)
  4233.         lea.l    StatGadTagList,a2
  4234.         lib    GadTools,CreateGadgetA
  4235.  
  4236.         move.l    d0,a0
  4237.         move.l    a0,StatusGad1
  4238.  
  4239.         lea.l    NGLoadGad,a1
  4240.         move.w    #ShellTop+28,gng_TopEdge(a1)
  4241.         add.w    d5,gng_TopEdge(a1)
  4242.         move.l    #BUTTON_KIND,d0
  4243.         move.l    vi,gng_VisualInfo(a1)
  4244.         lea.l    GadTagList,a2
  4245.         lib    GadTools,CreateGadgetA
  4246.  
  4247.         move.l    d0,a0
  4248.         move.l    a0,LoadGad1
  4249.         or.w    #GRELRIGHT,gg_Flags(a0)
  4250.  
  4251.         lea.l    glist2,a0
  4252.         lib    GadTools,CreateContext
  4253.         move.l    d0,ContextGad2
  4254.         beq    NoContextGad
  4255.  
  4256.         move.l    glist2,a0
  4257.         lea.l    NGStrGad1,a1
  4258.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4259.         add.w    d5,gng_TopEdge(a1)
  4260.         move.l    #STRING_KIND,d0
  4261.         move.l    vi,gng_VisualInfo(a1)
  4262.         lea.l    StrGadTagList1,a2
  4263.         lib    GadTools,CreateGadgetA
  4264.  
  4265.         move.l    d0,StrGad1
  4266.         move.l    d0,a0
  4267.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4268.         move.l    gg_SpecialInfo(a0),a1
  4269.         move.l    (a1),StrGadBuf1
  4270.  
  4271.         lea.l    NGStrGad2,a1
  4272.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4273.         add.w    d5,gng_TopEdge(a1)
  4274.         move.l    #STRING_KIND,d0
  4275.         move.l    vi,gng_VisualInfo(a1)
  4276.         lea.l    StrGadTagList2,a2
  4277.         lib    GadTools,CreateGadgetA
  4278.  
  4279.         move.l    d0,StrGad2
  4280.         move.l    d0,a0
  4281.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4282.         move.l    gg_SpecialInfo(a0),a1
  4283.         move.l    (a1),StrGadBuf2
  4284.  
  4285.         lea.l    NGStrGad3,a1
  4286.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4287.         add.w    d5,gng_TopEdge(a1)
  4288.         move.l    #STRING_KIND,d0
  4289.         move.l    vi,gng_VisualInfo(a1)
  4290.         lea.l    StrGadTagList1,a2
  4291.         lib    GadTools,CreateGadgetA
  4292.  
  4293.         move.l    d0,StrGad3
  4294.         move.l    d0,a0
  4295.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4296.         move.l    gg_SpecialInfo(a0),a1
  4297.         move.l    (a1),StrGadBuf3
  4298.  
  4299.         lea.l    NGStrGad4,a1
  4300.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4301.         add.w    d5,gng_TopEdge(a1)
  4302.         move.l    #STRING_KIND,d0
  4303.         move.l    vi,gng_VisualInfo(a1)
  4304.         lea.l    StrGadTagList2,a2
  4305.         lib    GadTools,CreateGadgetA
  4306.  
  4307.         move.l    d0,StrGad4
  4308.         move.l    d0,a0
  4309.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4310.         move.l    gg_SpecialInfo(a0),a1
  4311.         move.l    (a1),StrGadBuf4
  4312.  
  4313.         lea.l    NGStrGad5,a1
  4314.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4315.         add.w    d5,gng_TopEdge(a1)
  4316.         move.l    #STRING_KIND,d0
  4317.         move.l    vi,gng_VisualInfo(a1)
  4318.         lea.l    StrGadTagList1,a2
  4319.         lib    GadTools,CreateGadgetA
  4320.  
  4321.         move.l    d0,StrGad5
  4322.         move.l    d0,a0
  4323.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4324.         move.l    gg_SpecialInfo(a0),a1
  4325.         move.l    (a1),StrGadBuf5
  4326.  
  4327.         lea.l    NGStrGad6,a1
  4328.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4329.         add.w    d5,gng_TopEdge(a1)
  4330.         move.l    #STRING_KIND,d0
  4331.         move.l    vi,gng_VisualInfo(a1)
  4332.         lea.l    StrGadTagList2,a2
  4333.         lib    GadTools,CreateGadgetA
  4334.  
  4335.         move.l    d0,StrGad6
  4336.         move.l    d0,a0
  4337.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4338.         move.l    gg_SpecialInfo(a0),a1
  4339.         move.l    (a1),StrGadBuf6
  4340.  
  4341.         lea.l    NGStrGad7,a1
  4342.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4343.         add.w    d5,gng_TopEdge(a1)
  4344.         move.l    #STRING_KIND,d0
  4345.         move.l    vi,gng_VisualInfo(a1)
  4346.         lea.l    StrGadTagList1,a2
  4347.         lib    GadTools,CreateGadgetA
  4348.  
  4349.         move.l    d0,StrGad7
  4350.         move.l    d0,a0
  4351.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4352.         move.l    gg_SpecialInfo(a0),a1
  4353.         move.l    (a1),StrGadBuf7
  4354.  
  4355.         lea.l    NGStrGad8,a1
  4356.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4357.         add.w    d5,gng_TopEdge(a1)
  4358.         move.l    #STRING_KIND,d0
  4359.         move.l    vi,gng_VisualInfo(a1)
  4360.         lea.l    StrGadTagList2,a2
  4361.         lib    GadTools,CreateGadgetA
  4362.  
  4363.         move.l    d0,StrGad8
  4364.         move.l    d0,a0
  4365.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4366.         move.l    gg_SpecialInfo(a0),a1
  4367.         move.l    (a1),StrGadBuf8
  4368.  
  4369.         lea.l    NGStrGad9,a1
  4370.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4371.         add.w    d5,gng_TopEdge(a1)
  4372.         move.l    #STRING_KIND,d0
  4373.         move.l    vi,gng_VisualInfo(a1)
  4374.         lea.l    StrGadTagList1,a2
  4375.         lib    GadTools,CreateGadgetA
  4376.  
  4377.         move.l    d0,StrGad9
  4378.         move.l    d0,a0
  4379.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4380.         move.l    gg_SpecialInfo(a0),a1
  4381.         move.l    (a1),StrGadBuf9
  4382.  
  4383.         lea.l    NGStrGad10,a1
  4384.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4385.         add.w    d5,gng_TopEdge(a1)
  4386.         move.l    #STRING_KIND,d0
  4387.         move.l    vi,gng_VisualInfo(a1)
  4388.         lea.l    StrGadTagList2,a2
  4389.         lib    GadTools,CreateGadgetA
  4390.  
  4391.         move.l    d0,StrGad10
  4392.         move.l    d0,a0
  4393.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4394.         move.l    gg_SpecialInfo(a0),a1
  4395.         move.l    (a1),StrGadBuf10
  4396.  
  4397.         lea.l    NGStrGad11,a1
  4398.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4399.         add.w    d5,gng_TopEdge(a1)
  4400.         move.l    #STRING_KIND,d0
  4401.         move.l    vi,gng_VisualInfo(a1)
  4402.         lea.l    StrGadTagList1,a2
  4403.         lib    GadTools,CreateGadgetA
  4404.  
  4405.         move.l    d0,StrGad11
  4406.         move.l    d0,a0
  4407.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4408.         move.l    gg_SpecialInfo(a0),a1
  4409.         move.l    (a1),StrGadBuf11
  4410.  
  4411.         lea.l    NGStrGad12,a1
  4412.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4413.         add.w    d5,gng_TopEdge(a1)
  4414.         move.l    #STRING_KIND,d0
  4415.         move.l    vi,gng_VisualInfo(a1)
  4416.         lea.l    StrGadTagList2,a2
  4417.         lib    GadTools,CreateGadgetA
  4418.  
  4419.         move.l    d0,StrGad12
  4420.         move.l    d0,a0
  4421.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4422.         move.l    gg_SpecialInfo(a0),a1
  4423.         move.l    (a1),StrGadBuf12
  4424.  
  4425.         lea.l    NGStrGad13,a1
  4426.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4427.         add.w    d5,gng_TopEdge(a1)
  4428.         move.l    #STRING_KIND,d0
  4429.         move.l    vi,gng_VisualInfo(a1)
  4430.         lea.l    StrGadTagList1,a2
  4431.         lib    GadTools,CreateGadgetA
  4432.  
  4433.         move.l    d0,StrGad13
  4434.         move.l    d0,a0
  4435.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4436.         move.l    gg_SpecialInfo(a0),a1
  4437.         move.l    (a1),StrGadBuf13
  4438.  
  4439.         lea.l    NGStrGad14,a1
  4440.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4441.         add.w    d5,gng_TopEdge(a1)
  4442.         move.l    #STRING_KIND,d0
  4443.         move.l    vi,gng_VisualInfo(a1)
  4444.         lea.l    StrGadTagList2,a2
  4445.         lib    GadTools,CreateGadgetA
  4446.  
  4447.         move.l    d0,StrGad14
  4448.         move.l    d0,a0
  4449.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4450.         move.l    gg_SpecialInfo(a0),a1
  4451.         move.l    (a1),StrGadBuf14
  4452.  
  4453.         lea.l    NGStrGad15,a1
  4454.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4455.         add.w    d5,gng_TopEdge(a1)
  4456.         move.l    #STRING_KIND,d0
  4457.         move.l    vi,gng_VisualInfo(a1)
  4458.         lea.l    StrGadTagList1,a2
  4459.         lib    GadTools,CreateGadgetA
  4460.  
  4461.         move.l    d0,StrGad15
  4462.         move.l    d0,a0
  4463.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4464.         move.l    gg_SpecialInfo(a0),a1
  4465.         move.l    (a1),StrGadBuf15
  4466.  
  4467.         lea.l    NGStrGad16,a1
  4468.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4469.         add.w    d5,gng_TopEdge(a1)
  4470.         move.l    #STRING_KIND,d0
  4471.         move.l    vi,gng_VisualInfo(a1)
  4472.         lea.l    StrGadTagList2,a2
  4473.         lib    GadTools,CreateGadgetA
  4474.  
  4475.         move.l    d0,StrGad16
  4476.         move.l    d0,a0
  4477.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4478.         move.l    gg_SpecialInfo(a0),a1
  4479.         move.l    (a1),StrGadBuf16
  4480.  
  4481.         lea.l    NGStrGad17,a1
  4482.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4483.         add.w    d5,gng_TopEdge(a1)
  4484.         move.l    #STRING_KIND,d0
  4485.         move.l    vi,gng_VisualInfo(a1)
  4486.         lea.l    StrGadTagList1,a2
  4487.         lib    GadTools,CreateGadgetA
  4488.  
  4489.         move.l    d0,StrGad17
  4490.         move.l    d0,a0
  4491.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4492.         move.l    gg_SpecialInfo(a0),a1
  4493.         move.l    (a1),StrGadBuf17
  4494.  
  4495.         lea.l    NGStrGad18,a1
  4496.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4497.         add.w    d5,gng_TopEdge(a1)
  4498.         move.l    #STRING_KIND,d0
  4499.         move.l    vi,gng_VisualInfo(a1)
  4500.         lea.l    StrGadTagList2,a2
  4501.         lib    GadTools,CreateGadgetA
  4502.  
  4503.         move.l    d0,StrGad18
  4504.         move.l    d0,a0
  4505.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4506.         move.l    gg_SpecialInfo(a0),a1
  4507.         move.l    (a1),StrGadBuf18
  4508.  
  4509.         lea.l    NGStrGad19,a1
  4510.         move.w    #ShellTop+10*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4511.         add.w    d5,gng_TopEdge(a1)
  4512.         move.l    #STRING_KIND,d0
  4513.         move.l    vi,gng_VisualInfo(a1)
  4514.         lea.l    StrGadTagList1,a2
  4515.         lib    GadTools,CreateGadgetA
  4516.  
  4517.         move.l    d0,StrGad19
  4518.         move.l    d0,a0
  4519.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4520.         move.l    gg_SpecialInfo(a0),a1
  4521.         move.l    (a1),StrGadBuf19
  4522.  
  4523.         lea.l    NGStrGad20,a1
  4524.         move.w    #ShellTop+10*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4525.         add.w    d5,gng_TopEdge(a1)
  4526.         move.l    #STRING_KIND,d0
  4527.         move.l    vi,gng_VisualInfo(a1)
  4528.         lea.l    StrGadTagList2,a2
  4529.         lib    GadTools,CreateGadgetA
  4530.  
  4531.         move.l    d0,StrGad20
  4532.         move.l    d0,a0
  4533.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4534.         move.l    gg_SpecialInfo(a0),a1
  4535.         move.l    (a1),StrGadBuf20
  4536.  
  4537.         lea.l    NGDesc1Gad,a1
  4538.         move.w    #ShellTop,gng_TopEdge(a1)
  4539.         add.w    d5,gng_TopEdge(a1)
  4540.         move.l    #TEXT_KIND,d0
  4541.         move.l    vi,gng_VisualInfo(a1)
  4542.         lea.l    DescGadTagList,a2
  4543.         lib    GadTools,CreateGadgetA
  4544.  
  4545.         move.l    d0,a0
  4546.  
  4547.         lea.l    NGDesc2Gad,a1
  4548.         move.w    #ShellTop,gng_TopEdge(a1)
  4549.         add.w    d5,gng_TopEdge(a1)
  4550.         move.l    #TEXT_KIND,d0
  4551.         move.l    vi,gng_VisualInfo(a1)
  4552.         lea.l    DescGadTagList,a2
  4553.         lib    GadTools,CreateGadgetA
  4554.  
  4555.         move.l    d0,a0
  4556.         lea.l    NGGetGad1,a1
  4557.         move.w    #ShellTop+11*(10+INTERHEIGHT)+2*INTERHEIGHT,gng_TopEdge(a1)
  4558.         add.w    d5,gng_TopEdge(a1)
  4559.         move.l    #BUTTON_KIND,d0
  4560.         move.l    vi,gng_VisualInfo(a1)
  4561.         lea.l    GadTagList,a2
  4562.         lib    GadTools,CreateGadgetA
  4563.  
  4564.         move.l    d0,a0
  4565.         move.l    a0,GetGad1
  4566.  
  4567. ;Priority Window
  4568.  
  4569.         lea.l    glist3,a0
  4570.         lib    GadTools,CreateContext
  4571.         move.l    d0,ContextGad3
  4572.         beq    NoContextGad
  4573.  
  4574.         move.l    glist3,a0
  4575.         lea.l    NGStrGad21,a1
  4576.         move.w    #ShellTop,gng_TopEdge(a1)
  4577.         add.w    d5,gng_TopEdge(a1)
  4578.         move.l    #INTEGER_KIND,d0
  4579.         move.l    vi,gng_VisualInfo(a1)
  4580.         lea.l    StrGadTagList3,a2
  4581.         lib    GadTools,CreateGadgetA
  4582.  
  4583.         move.l    d0,StrGad21
  4584.         move.l    d0,a0
  4585.         move.l    gg_SpecialInfo(a0),a1
  4586.         add.l    #si_LongInt,a1
  4587.         move.l    a1,StrGadInt21
  4588.  
  4589. ;Error window
  4590.  
  4591.         lea.l    glist4,a0
  4592.         lib    GadTools,CreateContext
  4593.         move.l    d0,ContextGad4
  4594.         beq    NoContextGad
  4595.  
  4596.         move.l    glist4,a0
  4597.         lea.l    NGStrGad22,a1
  4598.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4599.         add.w    d5,gng_TopEdge(a1)
  4600.         move.l    #STRING_KIND,d0
  4601.         move.l    vi,gng_VisualInfo(a1)
  4602.         lea.l    StrGadTagList2,a2
  4603.         lib    GadTools,CreateGadgetA
  4604.  
  4605.         move.l    d0,StrGad22
  4606.         move.l    d0,a0
  4607.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4608.         move.l    gg_SpecialInfo(a0),a1
  4609.         move.l    (a1),StrGadBuf22
  4610.  
  4611.         lea.l    NGStrGad23,a1
  4612.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4613.         add.w    d5,gng_TopEdge(a1)
  4614.         move.l    #STRING_KIND,d0
  4615.         move.l    vi,gng_VisualInfo(a1)
  4616.         lea.l    StrGadTagList2,a2
  4617.         lib    GadTools,CreateGadgetA
  4618.  
  4619.         move.l    d0,StrGad23
  4620.         move.l    d0,a0
  4621.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4622.         move.l    gg_SpecialInfo(a0),a1
  4623.         move.l    (a1),StrGadBuf23
  4624.  
  4625.         lea.l    NGStrGad24,a1
  4626.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4627.         add.w    d5,gng_TopEdge(a1)
  4628.         move.l    #STRING_KIND,d0
  4629.         move.l    vi,gng_VisualInfo(a1)
  4630.         lea.l    StrGadTagList2,a2
  4631.         lib    GadTools,CreateGadgetA
  4632.  
  4633.         move.l    d0,StrGad24
  4634.         move.l    d0,a0
  4635.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4636.         move.l    gg_SpecialInfo(a0),a1
  4637.         move.l    (a1),StrGadBuf24
  4638.  
  4639.         lea.l    NGStrGad25,a1
  4640.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4641.         add.w    d5,gng_TopEdge(a1)
  4642.         move.l    #STRING_KIND,d0
  4643.         move.l    vi,gng_VisualInfo(a1)
  4644.         lea.l    StrGadTagList2,a2
  4645.         lib    GadTools,CreateGadgetA
  4646.  
  4647.         move.l    d0,StrGad25
  4648.         move.l    d0,a0
  4649.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4650.         move.l    gg_SpecialInfo(a0),a1
  4651.         move.l    (a1),StrGadBuf25
  4652.  
  4653.         lea.l    NGStrGad26,a1
  4654.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4655.         add.w    d5,gng_TopEdge(a1)
  4656.         move.l    #STRING_KIND,d0
  4657.         move.l    vi,gng_VisualInfo(a1)
  4658.         lea.l    StrGadTagList2,a2
  4659.         lib    GadTools,CreateGadgetA
  4660.  
  4661.         move.l    d0,StrGad26
  4662.         move.l    d0,a0
  4663.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4664.         move.l    gg_SpecialInfo(a0),a1
  4665.         move.l    (a1),StrGadBuf26
  4666.  
  4667.         lea.l    NGStrGad27,a1
  4668.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4669.         add.w    d5,gng_TopEdge(a1)
  4670.         move.l    #STRING_KIND,d0
  4671.         move.l    vi,gng_VisualInfo(a1)
  4672.         lea.l    StrGadTagList2,a2
  4673.         lib    GadTools,CreateGadgetA
  4674.  
  4675.         move.l    d0,StrGad27
  4676.         move.l    d0,a0
  4677.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4678.         move.l    gg_SpecialInfo(a0),a1
  4679.         move.l    (a1),StrGadBuf27
  4680.  
  4681.         lea.l    NGStrGad28,a1
  4682.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4683.         add.w    d5,gng_TopEdge(a1)
  4684.         move.l    #STRING_KIND,d0
  4685.         move.l    vi,gng_VisualInfo(a1)
  4686.         lea.l    StrGadTagList2,a2
  4687.         lib    GadTools,CreateGadgetA
  4688.  
  4689.         move.l    d0,StrGad28
  4690.         move.l    d0,a0
  4691.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4692.         move.l    gg_SpecialInfo(a0),a1
  4693.         move.l    (a1),StrGadBuf28
  4694.  
  4695.         lea.l    NGStrGad29,a1
  4696.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4697.         add.w    d5,gng_TopEdge(a1)
  4698.         move.l    #STRING_KIND,d0
  4699.         move.l    vi,gng_VisualInfo(a1)
  4700.         lea.l    StrGadTagList2,a2
  4701.         lib    GadTools,CreateGadgetA
  4702.  
  4703.         move.l    d0,StrGad29
  4704.         move.l    d0,a0
  4705.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4706.         move.l    gg_SpecialInfo(a0),a1
  4707.         move.l    (a1),StrGadBuf29
  4708.  
  4709.         lea.l    NGStrGad30,a1
  4710.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4711.         add.w    d5,gng_TopEdge(a1)
  4712.         move.l    #STRING_KIND,d0
  4713.         move.l    vi,gng_VisualInfo(a1)
  4714.         lea.l    StrGadTagList2,a2
  4715.         lib    GadTools,CreateGadgetA
  4716.  
  4717.         move.l    d0,StrGad30
  4718.         move.l    d0,a0
  4719.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4720.         move.l    gg_SpecialInfo(a0),a1
  4721.         move.l    (a1),StrGadBuf30
  4722.  
  4723.         lea.l    NGDesc3Gad,a1
  4724.         move.w    #ShellTop,gng_TopEdge(a1)
  4725.         add.w    d5,gng_TopEdge(a1)
  4726.         move.l    #TEXT_KIND,d0
  4727.         move.l    vi,gng_VisualInfo(a1)
  4728.         lea.l    DescGadTagList,a2
  4729.         lib    GadTools,CreateGadgetA
  4730.  
  4731.         move.l    d0,a0
  4732.  
  4733.         lea.l    NGDesc4Gad,a1
  4734.         move.w    #ShellTop,gng_TopEdge(a1)
  4735.         add.w    d5,gng_TopEdge(a1)
  4736.         move.l    #TEXT_KIND,d0
  4737.         move.l    vi,gng_VisualInfo(a1)
  4738.         lea.l    DescGadTagList,a2
  4739.         lib    GadTools,CreateGadgetA
  4740.  
  4741.         move.l    d0,a0
  4742.  
  4743.         lea.l    NGDesc5Gad,a1
  4744.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4745.         add.w    d5,gng_TopEdge(a1)
  4746.         move.l    #TEXT_KIND,d0
  4747.         move.l    vi,gng_VisualInfo(a1)
  4748.         lea.l    DescGadTagList,a2
  4749.         lib    GadTools,CreateGadgetA
  4750.  
  4751.         move.l    d0,a0
  4752.  
  4753.         lea.l    NGDesc6Gad,a1
  4754.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4755.         add.w    d5,gng_TopEdge(a1)
  4756.         move.l    #TEXT_KIND,d0
  4757.         move.l    vi,gng_VisualInfo(a1)
  4758.         lea.l    DescGadTagList,a2
  4759.         lib    GadTools,CreateGadgetA
  4760.  
  4761.         move.l    d0,a0
  4762.  
  4763.         lea.l    NGDesc7Gad,a1
  4764.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4765.         add.w    d5,gng_TopEdge(a1)
  4766.         move.l    #TEXT_KIND,d0
  4767.         move.l    vi,gng_VisualInfo(a1)
  4768.         lea.l    DescGadTagList,a2
  4769.         lib    GadTools,CreateGadgetA
  4770.  
  4771.         move.l    d0,a0
  4772.  
  4773.         lea.l    NGDesc8Gad,a1
  4774.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4775.         add.w    d5,gng_TopEdge(a1)
  4776.         move.l    #TEXT_KIND,d0
  4777.         move.l    vi,gng_VisualInfo(a1)
  4778.         lea.l    DescGadTagList,a2
  4779.         lib    GadTools,CreateGadgetA
  4780.  
  4781.         move.l    d0,a0
  4782.  
  4783.         lea.l    NGDesc9Gad,a1
  4784.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4785.         add.w    d5,gng_TopEdge(a1)
  4786.         move.l    #TEXT_KIND,d0
  4787.         move.l    vi,gng_VisualInfo(a1)
  4788.         lea.l    DescGadTagList,a2
  4789.         lib    GadTools,CreateGadgetA
  4790.  
  4791.         move.l    d0,a0
  4792.  
  4793.         lea.l    NGDesc10Gad,a1
  4794.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4795.         add.w    d5,gng_TopEdge(a1)
  4796.         move.l    #TEXT_KIND,d0
  4797.         move.l    vi,gng_VisualInfo(a1)
  4798.         lea.l    DescGadTagList,a2
  4799.         lib    GadTools,CreateGadgetA
  4800.  
  4801.         move.l    d0,a0
  4802.  
  4803.         lea.l    NGDesc11Gad,a1
  4804.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4805.         add.w    d5,gng_TopEdge(a1)
  4806.         move.l    #TEXT_KIND,d0
  4807.         move.l    vi,gng_VisualInfo(a1)
  4808.         lea.l    DescGadTagList,a2
  4809.         lib    GadTools,CreateGadgetA
  4810.  
  4811.         move.l    d0,a0
  4812.  
  4813.         lea.l    NGDesc12Gad,a1
  4814.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4815.         add.w    d5,gng_TopEdge(a1)
  4816.         move.l    #TEXT_KIND,d0
  4817.         move.l    vi,gng_VisualInfo(a1)
  4818.         lea.l    DescGadTagList,a2
  4819.         lib    GadTools,CreateGadgetA
  4820.  
  4821.         move.l    d0,a0
  4822.  
  4823.         lea.l    NGDesc13Gad,a1
  4824.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4825.         add.w    d5,gng_TopEdge(a1)
  4826.         move.l    #TEXT_KIND,d0
  4827.         move.l    vi,gng_VisualInfo(a1)
  4828.         lea.l    DescGadTagList,a2
  4829.         lib    GadTools,CreateGadgetA
  4830.  
  4831.         move.l    d0,a0
  4832.  
  4833.         lea.l    NGGetGad2,a1
  4834.         move.w    #ShellTop+10*(10+INTERHEIGHT)+2*INTERHEIGHT,gng_TopEdge(a1)
  4835.         add.w    d5,gng_TopEdge(a1)
  4836.         move.l    #BUTTON_KIND,d0
  4837.         move.l    vi,gng_VisualInfo(a1)
  4838.         lea.l    GadTagList,a2
  4839.         lib    GadTools,CreateGadgetA
  4840.  
  4841.         move.l    d0,a0
  4842.         move.l    a0,GetGad2
  4843.  
  4844.         move.b    #1,GadMagic        ;Make worked OK
  4845.  
  4846. ;New style menu stuff
  4847.  
  4848.         lea.l    MNProjectMenu1,a0
  4849.         lea.l    MenuTagList,a1
  4850.         lib    GadTools,CreateMenusA
  4851.         move.l    d0,mlist
  4852.         beq    NoMenus
  4853.  
  4854.         move.l    mlist,a0
  4855.         move.l    vi,a1
  4856.         lea.l    MenuTagList,a2
  4857.         lib    GadTools,LayoutMenusA
  4858.  
  4859.         lea.l    MNPageMenu1,a0
  4860.         lea.l    MenuTagList2,a1
  4861.         lib    GadTools,CreateMenusA
  4862.         move.l    d0,mlist2
  4863.         beq    NoMenus
  4864.  
  4865.         move.l    mlist2,a0
  4866.         move.l    vi,a1
  4867.         lea.l    MenuTagList2,a2
  4868.         lib    GadTools,LayoutMenusA
  4869.         tst.l    d0
  4870.         beq    NoMenus
  4871.         move.b    #1,MenuMagic
  4872.         move.l    #-1,d0
  4873.         rts
  4874.  
  4875. ;Open Window 1
  4876.  
  4877. OpenWin1:    tst.l    Window1
  4878.         bne    OpenWin1_OUT
  4879.  
  4880.         bsr    DoLayOut
  4881.         tst.l    d0
  4882.         beq    OpenWin1_ERR1
  4883.  
  4884.         move.l    OptPubScreen,Win1TagList.1
  4885.         tst.l    OptionIconify
  4886.         beq    OpenWin1.01
  4887.         lea.l    NewWindow1,a0
  4888.         and.l    #~ACTIVATE,nw_Flags(a0)
  4889.         move.l    NewWindow1,ZoomXY
  4890.         move.l    NewWindow1+4,ZoomXY+4
  4891.         move.l    Alt1XY,nw_LeftEdge(a0)
  4892.         move.w    #160,nw_Width(a0)
  4893.         move.w    BHeight,nw_Height(a0)
  4894. OpenWin1.01:    lea.l    NewWindow1,a0
  4895.         lea.l    Win1TagList,a1
  4896.         lib    Intuition,OpenWindowTagList
  4897.         move.l    d0,Window1
  4898.         beq    OpenWin1_ERR1
  4899.         move.l    Window1,AslReqTags+4
  4900.         move.l    Window1,GetReqTags+4
  4901.         bsr    AddGads            ;Window refreshed here
  4902.         move.l    Window1,a0
  4903.         move.l    $32(a0),RP
  4904.         move.l    mlist,a1
  4905.         lib    Intuition,SetMenuStrip
  4906.         bsr    UnLockPubScr
  4907. ;        bsr    ActGad            ;BUG: Crashes in certain cases?!?
  4908. OpenWin1_OUT:    move.l    #-1,d0            ;BUG: When no prefs file?
  4909.         rts
  4910. OpenWin1_ERR1:    clr.l    d0
  4911.         rts        
  4912.  
  4913. CloseWin1:    tst.l    Window1
  4914.         beq    CloseWin1_OUT
  4915. CloseWin1.1:    move.l    Window1,a0
  4916.         lib    Intuition,ClearMenuStrip
  4917.         move.l    Window1,a3
  4918.         bsr    ClearMSGs
  4919. CloseWin1_OUT:    clr.l    Window1
  4920.         rts
  4921.  
  4922. ;Open Window 2 (Edit commands)
  4923.  
  4924. OpenWin2:    move.l    OptPubScreen,Win2TagList.1
  4925.         lea.l    NewWindow2,a0
  4926.         lea.l    Win2TagList,a1
  4927.         lib    Intuition,OpenWindowTagList
  4928.         move.l    d0,Window2
  4929.         beq    OpenWin2_ERR1
  4930.         move.l    Window2,a0
  4931.         move.l    mlist2,a1
  4932.         lib    Intuition,SetMenuStrip
  4933.         bsr    AddGads2        ;Window refreshed here
  4934.         move.l    #-1,d0
  4935.         rts
  4936. OpenWin2_ERR1:    clr.l    d0
  4937.         rts        
  4938.  
  4939. CloseWin2:    tst.l    Window2
  4940.         beq    CloseWin2_OUT
  4941.         move.l    Window2,a0
  4942.         lib    Intuition,ClearMenuStrip
  4943.         move.l    Window2,a3
  4944.         bsr    ClearMSGs
  4945. CloseWin2_OUT:    clr.l    Window2
  4946.         rts
  4947.  
  4948. ;Open Window 3 (Priority requester)
  4949.  
  4950. OpenWin3:    move.l    OptPubScreen,Win2TagList.1    ;Yes, use Win2's tags...
  4951.         lea.l    NewWindow3,a0
  4952.         lea.l    glist3,a1
  4953.         move.l    a1,nw_FirstGadget(a0)
  4954.         lea.l    Win2TagList,a1
  4955.         lib    Intuition,OpenWindowTagList
  4956.         move.l    d0,Window3
  4957.         beq    OpenWin3_ERR1
  4958.  
  4959.         move.l    Window3,a0
  4960.         sub.l    a1,a1
  4961.         lib    GadTools,GT_RefreshWindow
  4962.         move.l    #-1,d0
  4963.         rts
  4964. OpenWin3_ERR1:    clr.l    d0
  4965.         rts        
  4966.  
  4967. CloseWin3:    tst.l    Window3
  4968.         beq    CloseWin3_OUT
  4969.         move.l    Window3,a3
  4970.         bsr    ClearMSGs
  4971. CloseWin3_OUT:    clr.l    Window3
  4972.         rts
  4973.  
  4974. ;Open Window 4 (Edit commands)
  4975.  
  4976. OpenWin4:    move.l    OptPubScreen,Win2TagList.1    ;Yes, use Win2's tags...
  4977.         lea.l    NewWindow4,a0
  4978.         lea.l    Win2TagList,a1
  4979.         lib    Intuition,OpenWindowTagList
  4980.         move.l    d0,Window4
  4981.         beq    OpenWin4_ERR1
  4982.         bsr    AddGads4        ;Window refreshed here
  4983.         move.l    #-1,d0
  4984.         rts
  4985. OpenWin4_ERR1:    clr.l    d0
  4986.         rts        
  4987.  
  4988. CloseWin4:    tst.l    Window4
  4989.         beq    CloseWin4_OUT
  4990.         move.l    Window4,a3
  4991.         bsr    ClearMSGs
  4992. CloseWin4_OUT:    clr.l    Window4
  4993.         rts
  4994.  
  4995. ;ClearMsgs subroutine
  4996. ;a3 = window structure
  4997.  
  4998. ClearMSGs:    lib    Exec,Forbid
  4999.         move.l    $56(a3),a2
  5000. ClearMsg1:    move.l    a2,a0
  5001.         lib    GadTools,GT_GetIMsg
  5002.         tst.l    d0
  5003.         beq    ClearMsg2
  5004.         move.l    d0,a1
  5005.         flib    GadTools,GT_ReplyIMsg
  5006.         bra    ClearMsg1
  5007. ClearMsg2:    move.l    a3,a0
  5008.         lib    Intuition,CloseWindow
  5009.         lib    Exec,Permit
  5010. ClearMsg3:    rts
  5011.  
  5012. Clean2.0Magic:    tst.b    GadMagic
  5013.         beq    Clean2.0M2
  5014.         move.l    glist,a0
  5015.         lib    GadTools,FreeGadgets
  5016.         move.l    glist2,a0
  5017.         lib    GadTools,FreeGadgets
  5018.         move.l    glist3,a0
  5019.         lib    GadTools,FreeGadgets
  5020.         move.l    glist4,a0
  5021.         lib    GadTools,FreeGadgets
  5022.  
  5023. Clean2.0M2:    tst.b    MenuMagic
  5024.         beq    Clean2.0M3
  5025.         move.l    mlist,a0
  5026.         lib    GadTools,FreeMenus
  5027.         move.l    mlist2,a0
  5028.         lib    GadTools,FreeMenus
  5029.  
  5030. Clean2.0M3:    tst.l    vi
  5031.         beq    Clean2.0_OUT
  5032.         move.l    vi,a0
  5033.         lib    GadTools,FreeVisualInfo
  5034.  
  5035. Clean2.0_OUT:    rts
  5036.  
  5037. ;Error etc. messages
  5038.  
  5039. NoRDArgs:    lib    Dos,IoErr
  5040.         move.l    d0,d1
  5041.         clr.l    d2
  5042.         lib    Dos,PrintFault
  5043.         bra    ShutDown
  5044.  
  5045. NoMsgPort:    lea.l    NoMsgPortText1,a0
  5046.         bsr    Printer
  5047.         bra    ShutDown
  5048.  
  5049. NoMsgPort2:    lea.l    NoMsgPortText2,a0
  5050.         bsr    Printer
  5051.         bra    ShutDown
  5052.  
  5053. NoDos:        pull    d2-d7/a2-a6
  5054.         move.l    #RETURN_FAIL,d0
  5055.         rts
  5056.  
  5057. NoInt:        lea.l    NoIntText1,a0
  5058.         bsr    Printer
  5059.         bra    ShutDown
  5060.  
  5061. NoCommodities:    lea.l    NoCommoText1,a0
  5062.         bsr    Printer
  5063.         bra    ShutDown
  5064.  
  5065. NoAsl:        lea.l    NoAslText1,a0
  5066.         bsr    Printer
  5067.         bra    ShutDown
  5068.  
  5069. NoAslReq:    lea.l    NoAslReqText1,a0
  5070.         bsr    Printer
  5071.         bra    ShutDown
  5072.  
  5073. NoUtility:    lea.l    NoUtilityText1,a0
  5074.         bsr    Printer
  5075.         bra    ShutDown
  5076.  
  5077. NoVoice:    lea.l    NoVoiceText1,a0
  5078.         bsr    Printer
  5079.         bra    ShutDown
  5080.  
  5081. NoGadTools:    lea.l    NoGTText1,a0
  5082.         bsr    Printer
  5083.         bra    ShutDown
  5084.  
  5085. NoIcon:        lea.l    NoIconText1,a0
  5086.         bsr    Printer
  5087.         bra    ShutDown
  5088.  
  5089. NoIOReq:    lea.l    NoIOReqText1,a0
  5090.         bsr    Printer
  5091.         bra    ShutDown
  5092.  
  5093. NoTimer:    lea.l    NoTimerText1,a0
  5094.         bsr    Printer
  5095.         bra    ShutDown
  5096.  
  5097. NoPubScreen:    lea.l    NoPubScrText1,a0
  5098.         bsr    Printer
  5099.         clr.l    d0
  5100.         rts
  5101.  
  5102. NoWindow1:    lea.l    NoWindowText1,a0
  5103.         bsr    Printer
  5104.         bra    ShutDown
  5105.  
  5106. NoContextGad:    lea.l    NoContextText1,a0
  5107.         bsr    Printer
  5108.         clr.l    d0
  5109.         rts
  5110.  
  5111. NoMenus:    lea.l    NoMenusText1,a0
  5112.         bsr    Printer
  5113.         clr.l    d0
  5114.         rts
  5115.  
  5116. NoCommodity:    lea.l    NoCommodityText1,a0
  5117.         bsr    Printer
  5118.         bra    ShutDown
  5119.  
  5120. NoFilter:    lea.l    BadPopKeyText1,a0
  5121.         bsr    Printer
  5122.         bra    NoCommodity
  5123.  
  5124. BadPriority:    lea.l    BadPriorityText1,a0
  5125.         bsr    Printer
  5126.         bra    NoCommodity
  5127.  
  5128. Printer:    printa    a0,_stdout
  5129.         rts
  5130.  
  5131. Inform:        tst.l    Window1
  5132.         beq    Inform_OUT
  5133.         push    a0
  5134.         move.l    a0,SGTL2
  5135.         move.l    StatusGad1,a0
  5136.         move.l    Window1,a1
  5137.         sub.l    a2,a2
  5138.         lea.l    StatGadTagList2,a3
  5139.         lib    GadTools,GT_SetGadgetAttrsA
  5140.  
  5141.         pull    a1
  5142.         bsr    SetTitle
  5143. Inform_OUT:    rts
  5144.  
  5145. ;Give this the title pointer in a1
  5146.  
  5147. SetTitle:    tst.l    Window1
  5148.         beq    SetTitle_OUT
  5149.         push    a2
  5150.         move.l    Window1,a0
  5151.         move.l    #-1,a2
  5152.         lib    Intuition,SetWindowTitles
  5153.         pull    a2
  5154. SetTitle_OUT:    rts
  5155.  
  5156. ;Does a normal AutoRequest
  5157. ;
  5158. ;INPUT
  5159. ;
  5160. ;a1 = Main text body
  5161. ;a2 = Pos text
  5162. ;a3 = Neg text
  5163.  
  5164. DoAutoRequest:    clr.l    d0
  5165.         clr.l    d1
  5166.         clr.l    d2
  5167.         clr.l    d3
  5168.         sub.l    a0,a0        ;No win, cos' might be here b4 anything open
  5169.         lib    Intuition,AutoRequest
  5170.         rts
  5171.  
  5172. ;Reservations
  5173.  
  5174.         libnames
  5175.  
  5176. _SysBase:    dc.l    0
  5177. _DOSBase:    dc.l    0
  5178. _CxBase:    dc.l    0
  5179.  
  5180. ;Options
  5181.  
  5182. RDArgs1:    dc.l    0
  5183.  
  5184. CLArray1:
  5185. FromFile:    dc.l    0        ;A pointer to filename of PREFS!
  5186. OptionIconify:    dc.l    0
  5187. OptPubScreen:    dc.l    0        ;A pointer to pubscreen name
  5188. OptCXPri:    dc.l    0
  5189. OptCXPopKey:    dc.l    DefaultPopKey    ;A pointer to popkey string
  5190. OptCXPopUp:    dc.l    0        ;A pointer to 'Yes'/'No'
  5191. WBOptCXPri:    dc.l    0
  5192.  
  5193. ;ASL Stuff
  5194.  
  5195. AslReq:        dc.l    0
  5196.  
  5197. ;GadTools stuff
  5198.  
  5199. vi:        dc.l    0        ;Visual Info
  5200. mlist:        dc.l    0
  5201. mlist2:        dc.l    0
  5202. ContextGad:    dc.l    0
  5203. ContextGad2:    dc.l    0
  5204. ContextGad3:    dc.l    0
  5205. ContextGad4:    dc.l    0
  5206. GadMagic:    dc.b    0
  5207. MenuMagic:    dc.b    0
  5208.  
  5209. ;Gadgets
  5210.  
  5211. OnOffGad1:    dc.l    0
  5212. GainUGad1:    dc.l    0
  5213. GainDGad1:    dc.l    0
  5214. GainGad1:    dc.l    0        ;Gain number
  5215. SaveGad1:    dc.l    0
  5216. QuitGad1:    dc.l    0
  5217. DatStrGad1:    dc.l    0
  5218. DatStrGadBuf1:    dc.l    0        ;Only a pointer!
  5219. StatusGad1:    dc.l    0
  5220. LoadGad1:    dc.l    0
  5221. GetGad1:    dc.l    0
  5222. GetGad2:    dc.l    0
  5223.  
  5224. StrGad1:    dc.l    0
  5225. StrGadBuf1:    dc.l    0        ;Only a pointer!
  5226. StrGad2:    dc.l    0
  5227. StrGadBuf2:    dc.l    0        ;Only a pointer!
  5228. StrGad3:    dc.l    0
  5229. StrGadBuf3:    dc.l    0        ;Only a pointer!
  5230. StrGad4:    dc.l    0
  5231. StrGadBuf4:    dc.l    0        ;Only a pointer!
  5232. StrGad5:    dc.l    0
  5233. StrGadBuf5:    dc.l    0        ;Only a pointer!
  5234. StrGad6:    dc.l    0
  5235. StrGadBuf6:    dc.l    0        ;Only a pointer!
  5236. StrGad7:    dc.l    0
  5237. StrGadBuf7:    dc.l    0        ;Only a pointer!
  5238. StrGad8:    dc.l    0
  5239. StrGadBuf8:    dc.l    0        ;Only a pointer!
  5240. StrGad9:    dc.l    0
  5241. StrGadBuf9:    dc.l    0        ;Only a pointer!
  5242. StrGad10:    dc.l    0
  5243. StrGadBuf10:    dc.l    0        ;Only a pointer!
  5244. StrGad11:    dc.l    0
  5245. StrGadBuf11:    dc.l    0        ;Only a pointer!
  5246. StrGad12:    dc.l    0
  5247. StrGadBuf12:    dc.l    0        ;Only a pointer!
  5248. StrGad13:    dc.l    0
  5249. StrGadBuf13:    dc.l    0        ;Only a pointer!
  5250. StrGad14:    dc.l    0
  5251. StrGadBuf14:    dc.l    0        ;Only a pointer!
  5252. StrGad15:    dc.l    0
  5253. StrGadBuf15:    dc.l    0        ;Only a pointer!
  5254. StrGad16:    dc.l    0
  5255. StrGadBuf16:    dc.l    0        ;Only a pointer!
  5256. StrGad17:    dc.l    0
  5257. StrGadBuf17:    dc.l    0        ;Only a pointer!
  5258. StrGad18:    dc.l    0
  5259. StrGadBuf18:    dc.l    0        ;Only a pointer!
  5260. StrGad19:    dc.l    0
  5261. StrGadBuf19:    dc.l    0        ;Only a pointer!
  5262. StrGad20:    dc.l    0
  5263. StrGadBuf20:    dc.l    0        ;Only a pointer!
  5264.  
  5265. ;Priority
  5266.  
  5267. StrGad21:    dc.l    0
  5268. StrGadInt21:    dc.l    0        ;Only a pointer!
  5269.  
  5270. ;Errors
  5271.  
  5272. StrGad22:    dc.l    0
  5273. StrGadBuf22:    dc.l    0        ;Only a pointer!
  5274. StrGad23:    dc.l    0
  5275. StrGadBuf23:    dc.l    0        ;Only a pointer!
  5276. StrGad24:    dc.l    0
  5277. StrGadBuf24:    dc.l    0        ;Only a pointer!
  5278. StrGad25:    dc.l    0
  5279. StrGadBuf25:    dc.l    0        ;Only a pointer!
  5280. StrGad26:    dc.l    0
  5281. StrGadBuf26:    dc.l    0        ;Only a pointer!
  5282. StrGad27:    dc.l    0
  5283. StrGadBuf27:    dc.l    0        ;Only a pointer!
  5284. StrGad28:    dc.l    0
  5285. StrGadBuf28:    dc.l    0        ;Only a pointer!
  5286. StrGad29:    dc.l    0
  5287. StrGadBuf29:    dc.l    0        ;Only a pointer!
  5288. StrGad30:    dc.l    0
  5289. StrGadBuf30:    dc.l    0        ;Only a pointer!
  5290.  
  5291. ;Display stuff
  5292.  
  5293. PubScreen:    dc.l    0
  5294. Window1:    dc.l    0
  5295. Window2:    dc.l    0
  5296. Window3:    dc.l    0
  5297. Window4:    dc.l    0
  5298. BHeight:    dc.w    0
  5299. RP:        dc.l    0
  5300.  
  5301.         ds.w    0
  5302.  
  5303. ;Devices etc.
  5304.  
  5305. TRPort:        dc.l    0
  5306. TIORequest:    dc.l    0
  5307. TimerOpen:    dc.w    0
  5308.  
  5309. ;Other stuff, part I
  5310.  
  5311. OurTask:    dc.l    0
  5312. PrefsFile:    dc.l    0
  5313. DataFile:    dc.l    0
  5314. NILFile:    dc.l    0
  5315. _stdout:    dc.l    0
  5316. WBMsg:        dc.l    0
  5317. DiskObject:    dc.l    0
  5318. OldLock:    dc.l    0
  5319. TaskOn:        dc.w    0        ;0=Off, 1=On
  5320. TickCount:    dc.w    10        ;Delay Status update
  5321. Page:        dc.w    0        ;What page are we on ?
  5322. Saved:        dc.w    1        ;0=No, 1=Yes
  5323. PopUp:        dc.w    1        ;0=No, 1=Yes
  5324. DisActive:    dc.w    0        ;0=Yes, 1=No. Can we turn on/off?
  5325. VoicePort:    dc.l    0        ;Message port for voice.library
  5326. ARexxPort:    dc.l    0        ;Our ARexx port
  5327. CXPort:        dc.l    0        ;Message port for commodities
  5328. IEvents:    dc.l    0        ;List of Input Events to add
  5329. LastGad:    dc.l    0        ;Last active string gadget
  5330. LastGad2:    dc.l    0        ;Last active string gadget, part II
  5331. CXBroker1:    dc.l    0        ;Our commodities broker list
  5332. ConfAddress:    dc.l    0        ;Address of last command
  5333. Awake:        dc.w    0        ;Are we awake? (0=No, 1=Yes)
  5334. Time:        dc.l    0        ;How many secs are we awake?
  5335.  
  5336. ;Strings, error & other info
  5337.  
  5338. BreakText1:    dc.b    "***Break: VoiceShell",13,10,0
  5339. NoMsgPortText1: dc.b    "ERROR: Couldn't open message port!",13,10,0
  5340. NoMsgPortText2: dc.b    "ERROR: An ARexx port with the name 'VOICESHELL' already exists!",13,10,0
  5341. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library!",13,10,0
  5342. NoCommoText1:    dc.b    "ERROR: Couldn't open commodities.library!",13,10,0
  5343. NoAslText1:    dc.b    "ERROR: Couldn't open asl.library!",13,10,0
  5344. NoAslReqText1:    dc.b    "ERROR: Couldn't allocate ASL requester!",13,10,0
  5345. NoUtilityText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  5346. NoVoiceText1:    dc.b    "ERROR: Couldn't open voice.library, version 8.2+!",13,10,13,10
  5347.         dc.b    "CHECK: 1. Is voice.library installed?",13,10
  5348.         dc.b    "       2. Is the parallel port available?",13,10
  5349.         dc.b    "       3. Is another program using voice.library?",13,10,0
  5350. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  5351. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  5352. NoTimerText1:    dc.b    "ERROR: Couldn't open timer.device",13,10,0
  5353. NoIOReqText1:    dc.b    "ERROR: Couldn't get IORequest!",13,10,0
  5354. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen!",13,10,0
  5355. NoContextText1: dc.b    "ERROR: Couldn't create context gadget!",13,10,0
  5356. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure!",13,10,0
  5357. NoWindowText1:    dc.b    "ERROR: Couldn't open window!",13,10,0
  5358. NoCommodityText1: dc.b    "ERROR: Couldn't create commodity!",13,10
  5359.         dc.b    "       Another copy of VoiceShell is probably running.",13,10,0
  5360. BadPopKeyText1:    dc.b    "ERROR: Bad hotkey setting!",13,10,0
  5361. BadPriorityText1: dc.b    "ERROR: Bad priority value!",13,10,0
  5362. File_ERRText1:    dc.b    "Couldn't open preferences file!",0
  5363. File_ERRText2:    dc.b    "File error!",0
  5364. File_ERRText3:    dc.b    "Incorrect file type or version!",0
  5365. File_ERRText4:    dc.b    "Couldn't open data file!",0
  5366. NoMatchText1:    dc.b    "No Match",0
  5367. LowVolText1:    dc.b    "Low Volume",0
  5368. ClippingText1:    dc.b    "Too Loud",0
  5369. NoisyText1:    dc.b    "Too Noisy",0
  5370. TaskOnText1:    dc.b    "Turned On",0
  5371. TaskOffText1:    dc.b    "Turned Off",0
  5372. ReadyText1:    dc.b    "Ready",0
  5373. InactiveText1:    dc.b    "Inactive",0
  5374. NoCMDText1:    dc.b    "No Command",0
  5375. CMDFailText1:    dc.b    "Command Failed!",0
  5376. NoConfText1:    dc.b    "Not Confirmed!",0
  5377. AwakeText1:    dc.b    "Awake",0
  5378.  
  5379. ;Strings, names
  5380.  
  5381. TimerName:    dc.b    "timer.device",0
  5382. CLTemplate1:    dc.b    "FROM/K,I=ICONIFY/S,PS=PUBSCREEN/K,"    ;Cont'd
  5383.         dc.b    "PRI=CX_PRIORITY/N/K,PK=CX_POPKEY/K,PU=CX_POPUP/K",0
  5384. VSVersion:    dc.b    "$VER: VoiceShell "
  5385.         PROGVERSION
  5386.         dc.b    " (c) Copyright Tomi Blinnikka 1994",0
  5387. OKText1:    dc.b    "OK",0
  5388. CancelText1:    dc.b    "Cancel",0
  5389. PrefsName:    dc.b    "ENVARC:VoiceShell.PREFS",0
  5390. NILName:    dc.b    "CON:0/10/500/70/VoiceShell_Error/CLOSE/AUTO/WAIT",0
  5391. ICONIFYText1:    dc.b    "ICONIFY",0
  5392. PUBSCREENText1:    dc.b    "PUBSCREEN",0
  5393. CXPOPUPText1:    dc.b    "CX_POPUP",0
  5394. CXPOPKEYText1:    dc.b    "CX_POPKEY",0
  5395. CXPRIText1:    dc.b    "CX_PRIORITY",0
  5396. DefaultPopKey:    dc.b    "ctrl alt v",0
  5397. YESText1:    dc.b    "YES",0
  5398. NOText1:    dc.b    "NO",0
  5399. FROMText1:    dc.b    "FROM",0
  5400. AboutText1:    dc.b    "Name   : VoiceShell",0
  5401. AboutText2:    dc.b    "Version: "
  5402.         PROGVERSION
  5403.         dc.b    0
  5404. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  5405. AboutText4:    dc.b    "  (c) Copyright  1994",0
  5406.  
  5407.         IFD    VS_REGISTERED
  5408. AboutText5:    dc.b    "NOTE: Registered version",0
  5409.         ENDC
  5410.  
  5411.         IFND    VS_REGISTERED
  5412. AboutText5:    dc.b    "NOTE: Unregistered version",0
  5413.         ENDC
  5414. AboutText6:    dc.b    "Hotkey: ",0
  5415.  
  5416. QuitText1:    dc.b    "The data file has not been saved!",0
  5417. QuitText2:    dc.b    "Are you sure you want to quit?",0
  5418. VSName1:    dc.b    "VoiceShell",0
  5419. VSName2:    dc.b    "VoiceShell: Edit & Learn",0
  5420. VSName3:    dc.b    "Please enter:",0
  5421. VSName4:    dc.b    "VoiceShell: Error Commands",0
  5422. VSTitle:    dc.b    "Voice recognition:",0
  5423. VSDesc:        dc.b    "Start programs with voice commands",0
  5424. GetText1:    dc.b    "Command to run",0
  5425.  
  5426. ;ARexx strings
  5427.  
  5428. ARexxPortName:    dc.b    "VOICESHELL",0
  5429.  
  5430. ;Window control
  5431.  
  5432. RexxFront:    dc.b    "FRONT",0
  5433. RexxBack:    dc.b    "BACK",0
  5434. RexxZoom:    dc.b    "ZOOM",0
  5435. RexxHide:    dc.b    "HIDE",0
  5436. RexxShow:    dc.b    "SHOW",0
  5437.  
  5438. ;Misc
  5439.  
  5440. RexxOn:        dc.b    "ON",0
  5441. RexxOff:    dc.b    "OFF",0
  5442. RexxQuit:    dc.b    "QUIT",0
  5443.  
  5444. ;Sampler settings
  5445.  
  5446. RexxPerfSnd:    dc.b    "PERFSND",0
  5447. RexxSndMstr:    dc.b    "SNDMSTR",0
  5448. RexxDSS8:    dc.b    "DSS8",0
  5449. RexxGeneric:    dc.b    "GENERIC",0
  5450.  
  5451. ;Resolution
  5452.  
  5453. RexxResLo:    dc.b    "RESLO",0
  5454. RexxResHi:    dc.b    "RESHI",0
  5455.  
  5456. ;Accuracy
  5457.  
  5458. RexxLowest:    dc.b    "LOWEST",0
  5459. RexxLower:    dc.b    "LOWER",0
  5460. RexxLow:    dc.b    "LOW",0
  5461. RexxNormal:    dc.b    "NORMAL",0
  5462. RexxHigh:    dc.b    "HIGH",0
  5463. RexxHigher:    dc.b    "HIGHER",0
  5464. RexxEHigher:    dc.b    "EVENHIGHER",0
  5465. RexxMaximum:    dc.b    "MAXIMUM",0
  5466.  
  5467. ;Channel
  5468.  
  5469. RexxLeft:    dc.b    "LEFT",0
  5470. RexxRight:    dc.b    "RIGHT",0
  5471.  
  5472. ;Input gain
  5473.  
  5474. RexxLine:    dc.b    "LINE",0
  5475. RexxMic:    dc.b    "MIC",0
  5476.  
  5477. RexxGainUp:    dc.b    "GAINUP",0
  5478. RexxGainDown:    dc.b    "GAINDOWN",0
  5479.  
  5480. ;Timer
  5481.  
  5482. RexxTimerA:    dc.b    "TIMERA",0
  5483. RexxTimerB:    dc.b    "TIMERB",0
  5484.  
  5485. ;Confirmation
  5486.  
  5487. RexxConfirm:    dc.b    "CONFIRM",0
  5488. RexxNoConfirm:    dc.b    "NOCONFIRM",0
  5489.  
  5490. ;Wake up
  5491.  
  5492. RexxWake0:    dc.b    "WAKE0",0
  5493. RexxWake5:    dc.b    "WAKE5",0
  5494. RexxWake10:    dc.b    "WAKE10",0
  5495. RexxWake15:    dc.b    "WAKE15",0
  5496. RexxWake20:    dc.b    "WAKE20",0
  5497.  
  5498. ;Others not defined here:
  5499. ;
  5500. ;    LOAD
  5501. ;    KEY
  5502. ;
  5503.  
  5504.         ds.w    0
  5505.  
  5506. ;New screen & new window structures
  5507.  
  5508. NewWindow1:    dc.w    200,31            ;X,Y POS
  5509.         dc.w    320            ;WIDTH
  5510. Win1YSize:    dc.w    0            ;HEIGHT
  5511.         dc.b    0,1            ;PENS
  5512.         dc.l    REFRESHWINDOW!INTUITICKS!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  5513.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5514.         dc.l    0,0            ;GADGETS, CHECKMARK
  5515.         dc.l    VSName1            ;TITLE
  5516.         dc.l    0            ;SCREEN ADDRESS
  5517.         dc.l    0            ;BITMAP            
  5518.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5519.         dc.w    PUBLICSCREEN        ;TYPE
  5520.  
  5521. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  5522.         dc.l    WA_PubScreenName
  5523. Win1TagList.1:    dc.l    0
  5524.         dc.l    WA_Zoom,ZoomXY
  5525.         dc.l    TAG_DONE,0
  5526.  
  5527. ZoomXY:
  5528. SmallXPos:    dc.w    10
  5529. SmallYPos:    dc.w    21
  5530. SmallXSize:    dc.w    160
  5531. SmallYSize:    dc.w    0
  5532.  
  5533. NewWindow2:    dc.w    100,42            ;X,Y POS
  5534.         dc.w    430            ;WIDTH
  5535. Win2YSize:    dc.w    0            ;HEIGHT
  5536.         dc.b    0,1            ;PENS
  5537.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP!GADGETDOWN    ;IDCMP FLAGS
  5538.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5539.         dc.l    0,0            ;GADGETS, CHECKMARK
  5540.         dc.l    VSName2            ;TITLE
  5541.         dc.l    0            ;SCREEN ADDRESS
  5542.         dc.l    0            ;BITMAP            
  5543.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5544.         dc.w    PUBLICSCREEN        ;TYPE
  5545.  
  5546. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  5547.         dc.l    WA_PubScreenName
  5548. Win2TagList.1:    dc.l    0
  5549.         dc.l    TAG_DONE,0
  5550.  
  5551. NewWindow3:    dc.w    220,42            ;X,Y POS
  5552.         dc.w    200            ;WIDTH
  5553. Win3YSize:    dc.w    0            ;HEIGHT
  5554.         dc.b    0,1            ;PENS
  5555.         dc.l    REFRESHWINDOW!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!GADGETUP    ;IDCMP FLAGS
  5556.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5557.         dc.l    0,0            ;GADGETS, CHECKMARK
  5558.         dc.l    VSName3            ;TITLE
  5559.         dc.l    0            ;SCREEN ADDRESS
  5560.         dc.l    0            ;BITMAP
  5561.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5562.         dc.w    PUBLICSCREEN        ;TYPE
  5563.  
  5564.  
  5565. NewWindow4:    dc.w    100,42            ;X,Y POS
  5566.         dc.w    430            ;WIDTH
  5567. Win4YSize:    dc.w    0            ;HEIGHT
  5568.         dc.b    0,1            ;PENS
  5569.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP!GADGETDOWN    ;IDCMP FLAGS
  5570.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5571.         dc.l    0,0            ;GADGETS, CHECKMARK
  5572.         dc.l    VSName4            ;TITLE
  5573.         dc.l    0            ;SCREEN ADDRESS
  5574.         dc.l    0            ;BITMAP            
  5575.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5576.         dc.w    PUBLICSCREEN        ;TYPE
  5577.  
  5578. ;Fonts
  5579.  
  5580. Topaz:        dc.l    TopazName
  5581.         dc.w    8
  5582.         dc.b    0
  5583.         dc.b    0
  5584. TopazName:    dc.b    "topaz.font",0
  5585.         ds.w    0
  5586.  
  5587.  
  5588. ;ASL stuff
  5589.  
  5590. AslReqTags:    dc.l    ASL_Window
  5591.         dc.l    0            ;Move window pointer here!
  5592.         dc.l    TAG_DONE,0
  5593. GetReqTags:    dc.l    ASL_Window
  5594.         dc.l    0            ;Move window pointer here!
  5595.         dc.l    ASL_Hail,GetText1
  5596.         dc.l    ASL_FuncFlags,0
  5597.         dc.l    TAG_DONE,0
  5598.  
  5599. ;ITextStructures
  5600.  
  5601. OKTxt:        dc.b    1,2            ;PENS
  5602.         dc.w    0            ;MODE
  5603.         dc.w    0,0            ;LEFT+TOPEDGE
  5604.         dc.l    0            ;FONT
  5605.         dc.l    OKText1            ;TEXT
  5606.         dc.l    0            ;NEXTTEXT
  5607.  
  5608. CancelTxt:    dc.b    1,2            ;PENS
  5609.         dc.w    0            ;MODE
  5610.         dc.w    0,0            ;LEFT+TOPEDGE
  5611.         dc.l    0            ;FONT
  5612.         dc.l    CancelText1        ;TEXT
  5613.         dc.l    0            ;NEXTTEXT
  5614.  
  5615. File_ERRTxt1:    dc.b    1,2            ;PENS
  5616.         dc.w    0            ;MODE
  5617.         dc.w    10,10            ;LEFT+TOPEDGE
  5618.         dc.l    0            ;FONT
  5619.         dc.l    File_ERRText1        ;TEXT
  5620.         dc.l    0            ;NEXTTEXT
  5621.  
  5622. File_ERRTxt2:    dc.b    1,2            ;PENS
  5623.         dc.w    0            ;MODE
  5624.         dc.w    10,10            ;LEFT+TOPEDGE
  5625.         dc.l    0            ;FONT
  5626.         dc.l    File_ERRText2        ;TEXT
  5627.         dc.l    0            ;NEXTTEXT
  5628.  
  5629. File_ERRTxt3:    dc.b    1,2            ;PENS
  5630.         dc.w    0            ;MODE
  5631.         dc.w    10,10            ;LEFT+TOPEDGE
  5632.         dc.l    0            ;FONT
  5633.         dc.l    File_ERRText3        ;TEXT
  5634.         dc.l    0            ;NEXTTEXT
  5635.  
  5636. File_ERRTxt4:    dc.b    1,2            ;PENS
  5637.         dc.w    0            ;MODE
  5638.         dc.w    10,10            ;LEFT+TOPEDGE
  5639.         dc.l    0            ;FONT
  5640.         dc.l    File_ERRText4        ;TEXT
  5641.         dc.l    0            ;NEXTTEXT
  5642.  
  5643. AboutTxt1:    dc.b    1,2            ;PENS
  5644.         dc.w    0            ;MODE
  5645.         dc.w    0,0            ;LEFT+TOPEDGE
  5646.         dc.l    Topaz            ;FONT
  5647.         dc.l    AboutText1        ;TEXT
  5648.         dc.l    AboutTxt2        ;NEXTTEXT
  5649.  
  5650. AboutTxt2:    dc.b    1,2            ;PENS
  5651.         dc.w    0            ;MODE
  5652.         dc.w    0,10            ;LEFT+TOPEDGE
  5653.         dc.l    Topaz            ;FONT
  5654.         dc.l    AboutText2        ;TEXT
  5655.         dc.l    AboutTxt3        ;NEXTTEXT
  5656.  
  5657. AboutTxt3:    dc.b    1,2            ;PENS
  5658.         dc.w    0            ;MODE
  5659.         dc.w    0,20            ;LEFT+TOPEDGE
  5660.         dc.l    Topaz            ;FONT
  5661.         dc.l    AboutText3        ;TEXT
  5662.         dc.l    AboutTxt4        ;NEXTTEXT
  5663.  
  5664. AboutTxt4:    dc.b    1,2            ;PENS
  5665.         dc.w    0            ;MODE
  5666.         dc.w    0,30            ;LEFT+TOPEDGE
  5667.         dc.l    Topaz            ;FONT
  5668.         dc.l    AboutText4        ;TEXT
  5669.         dc.l    AboutTxt5        ;NEXTTEXT
  5670.  
  5671. AboutTxt5:    dc.b    1,2            ;PENS
  5672.         dc.w    0            ;MODE
  5673.         dc.w    0,50            ;LEFT+TOPEDGE
  5674.         dc.l    Topaz            ;FONT
  5675.         dc.l    AboutText5        ;TEXT
  5676.         dc.l    AboutTxt6        ;NEXTTEXT
  5677.  
  5678. AboutTxt6:    dc.b    1,2            ;PENS
  5679.         dc.w    0            ;MODE
  5680.         dc.w    0,70            ;LEFT+TOPEDGE
  5681.         dc.l    Topaz            ;FONT
  5682.         dc.l    AboutText6        ;TEXT
  5683.         dc.l    AboutTxt7        ;NEXTTEXT
  5684.  
  5685. AboutTxt7:    dc.b    1,2            ;PENS
  5686.         dc.w    0            ;MODE
  5687.         dc.w    0,80            ;LEFT+TOPEDGE
  5688.         dc.l    Topaz            ;FONT
  5689. AboutTxt7.X:    dc.l    0            ;TEXT
  5690.         dc.l    0 ;AboutTxt8        ;NEXTTEXT
  5691.  
  5692. QuitTxt1:    dc.b    1,2            ;PENS
  5693.         dc.w    0            ;MODE
  5694.         dc.w    0,0            ;LEFT+TOPEDGE
  5695.         dc.l    Topaz            ;FONT
  5696.         dc.l    QuitText1        ;TEXT
  5697.         dc.l    QuitTxt2        ;NEXTTEXT
  5698.  
  5699. QuitTxt2:    dc.b    1,2            ;PENS
  5700.         dc.w    0            ;MODE
  5701.         dc.w    0,20            ;LEFT+TOPEDGE
  5702.         dc.l    Topaz            ;FONT
  5703.         dc.l    QuitText2        ;TEXT
  5704.         dc.l    0 ;QuitTxt3        ;NEXTTEXT
  5705.  
  5706. ;Gadgets
  5707.  
  5708. OnOffGadText1:    dc.b    "On/Off",0
  5709. GainUGadText1:    dc.b    "Vol _Up",0
  5710. GainDGadText1:    dc.b    "Vol _Dwn",0
  5711. SaveGadText1:    dc.b    "_Save",0
  5712. QuitGadText1:    dc.b    "_Quit",0
  5713. DatGadText1:    dc.b    "Data _file",0
  5714. StatGadText1:    dc.b    "Status",0
  5715. LoadGadText1:    dc.b    "_Load",0
  5716. DescGadText1:    dc.b    "Description",0
  5717. DescGadText1.1:    dc.b    "On Error",0
  5718. DescGadText2:    dc.b    "Command to run",0
  5719. DescGadText3:    dc.b    "No Command",0
  5720. DescGadText4:    dc.b    "Cmd Failed",0
  5721. DescGadText5:    dc.b    "No Match",0
  5722. DescGadText6:    dc.b    "Too Loud",0
  5723. DescGadText7:    dc.b    "Too Low",0
  5724. DescGadText8:    dc.b    "Too Noisy",0
  5725. DescGadText9:    dc.b    "Confirm",0
  5726. DescGadText10:    dc.b    "Not Conf'd",0
  5727. DescGadText11:    dc.b    "Wake Up",0
  5728. GetGadText1:    dc.b    "_Get",0
  5729. PriGadText1:    dc.b    "Priority",0
  5730.         ds.w    0
  5731.  
  5732. glist:        dcb.b    gg_SIZEOF,0
  5733. glist2:        dcb.b    gg_SIZEOF,0
  5734. glist3:        dcb.b    gg_SIZEOF,0
  5735. glist4:        dcb.b    gg_SIZEOF,0
  5736.  
  5737. NGOnOffGad1:    dc.w    10        ;gng_LeftEdge
  5738.         dc.w    0        ;gng_TopEdge
  5739.         dc.w    0        ;gng_Width
  5740.         dc.w    13        ;gng_Height
  5741.         dc.l    OnOffGadText1    ;gng_GadgetText
  5742.         dc.l    Topaz        ;gng_TextAttr
  5743.         dc.w    10        ;gng_GadgetID
  5744.         dc.l    PLACETEXT_RIGHT ;gng_Flags
  5745.         dc.l    0        ;gng_VisualInfo
  5746.         dc.l    0        ;gng_UserData
  5747.  
  5748. NGGainUGad:    dc.w    10        ;gng_LeftEdge
  5749.         dc.w    0        ;gng_TopEdge
  5750.         dc.w    60        ;gng_Width
  5751.         dc.w    12        ;gng_Height
  5752.         dc.l    GainUGadText1    ;gng_GadgetText
  5753.         dc.l    Topaz        ;gng_TextAttr
  5754.         dc.w    20        ;gng_GadgetID
  5755.         dc.l    PLACETEXT_IN    ;gng_Flags
  5756.         dc.l    0        ;gng_VisualInfo
  5757.         dc.l    0        ;gng_UserData
  5758.  
  5759. NGGainDGad:    dc.w    10        ;gng_LeftEdge
  5760.         dc.w    0        ;gng_TopEdge
  5761.         dc.w    60        ;gng_Width
  5762.         dc.w    12        ;gng_Height
  5763.         dc.l    GainDGadText1    ;gng_GadgetText
  5764.         dc.l    Topaz        ;gng_TextAttr
  5765.         dc.w    30        ;gng_GadgetID
  5766.         dc.l    PLACETEXT_IN    ;gng_Flags
  5767.         dc.l    0        ;gng_VisualInfo
  5768.         dc.l    0        ;gng_UserData
  5769.  
  5770. NGGainGad:    dc.w    10+60+INTERWIDTH-3    ;gng_LeftEdge
  5771.         dc.w    0        ;gng_TopEdge
  5772.         dc.w    20        ;gng_Width
  5773.         dc.w    12        ;gng_Height
  5774.         dc.l    0        ;gng_GadgetText
  5775.         dc.l    Topaz        ;gng_TextAttr
  5776.         dc.w    0        ;gng_GadgetID
  5777.         dc.l    0        ;gng_Flags
  5778.         dc.l    0        ;gng_VisualInfo
  5779.         dc.l    0        ;gng_UserData
  5780.  
  5781. NGSaveGad:    dc.w    10        ;gng_LeftEdge
  5782.         dc.w    0        ;gng_TopEdge
  5783.         dc.w    60        ;gng_Width
  5784.         dc.w    12        ;gng_Height
  5785.         dc.l    SaveGadText1    ;gng_GadgetText
  5786.         dc.l    Topaz        ;gng_TextAttr
  5787.         dc.w    98        ;gng_GadgetID
  5788.         dc.l    PLACETEXT_IN    ;gng_Flags
  5789.         dc.l    0        ;gng_VisualInfo
  5790.         dc.l    0        ;gng_UserData
  5791.  
  5792. NGQuitGad:    dc.w    -70        ;gng_LeftEdge
  5793.         dc.w    0        ;gng_TopEdge
  5794.         dc.w    60        ;gng_Width
  5795.         dc.w    12        ;gng_Height
  5796.         dc.l    QuitGadText1    ;gng_GadgetText
  5797.         dc.l    Topaz        ;gng_TextAttr
  5798.         dc.w    99        ;gng_GadgetID
  5799.         dc.l    PLACETEXT_IN    ;gng_Flags
  5800.         dc.l    0        ;gng_VisualInfo
  5801.         dc.l    0        ;gng_UserData
  5802.  
  5803. NGDatStrGad1:    dc.w    100        ;gng_LeftEdge
  5804.         dc.w    ShellTop+28    ;gng_TopEdge
  5805.         dc.w    135        ;gng_Width
  5806.         dc.w    12        ;gng_Height
  5807.         dc.l    DatGadText1    ;gng_GadgetText
  5808.         dc.l    Topaz        ;gng_TextAttr
  5809.         dc.w    1        ;gng_GadgetID
  5810.         dc.l    PLACETEXT_BELOW ;gng_Flags
  5811.         dc.l    0        ;gng_VisualInfo
  5812.         dc.l    0        ;gng_UserData
  5813.  
  5814. NGStatusGad:    dc.w    100        ;gng_LeftEdge
  5815.         dc.w    0        ;gng_TopEdge
  5816.         dc.w    199        ;gng_Width
  5817.         dc.w    12        ;gng_Height
  5818.         dc.l    StatGadText1    ;gng_GadgetText
  5819.         dc.l    Topaz        ;gng_TextAttr
  5820.         dc.w    0        ;gng_GadgetID
  5821.         dc.l    PLACETEXT_BELOW ;gng_Flags
  5822.         dc.l    0        ;gng_VisualInfo
  5823.         dc.l    0        ;gng_UserData
  5824.  
  5825. NGLoadGad:    dc.w    -70        ;gng_LeftEdge
  5826.         dc.w    0        ;gng_TopEdge
  5827.         dc.w    60        ;gng_Width
  5828.         dc.w    12        ;gng_Height
  5829.         dc.l    LoadGadText1    ;gng_GadgetText
  5830.         dc.l    Topaz        ;gng_TextAttr
  5831.         dc.w    40        ;gng_GadgetID
  5832.         dc.l    PLACETEXT_IN    ;gng_Flags
  5833.         dc.l    0        ;gng_VisualInfo
  5834.         dc.l    0        ;gng_UserData
  5835.  
  5836. ;Gadget TagLists
  5837.  
  5838. GadTagList:    dc.l    GT_Underscore,'_'
  5839.         dc.l    TAG_DONE,0
  5840.  
  5841. GainGadTagList:    dc.l    GTNM_Border,TRUE
  5842.         dc.l    GTNM_Number
  5843. GainPointer:    dc.l    0
  5844.         dc.l    TAG_DONE,0
  5845.  
  5846. StatGadTagList: dc.l    GTTX_Border,TRUE
  5847.         dc.l    TAG_DONE,0
  5848.  
  5849. StatGadTagList2: dc.l    GTTX_Border,TRUE
  5850.         dc.l    GTTX_Text
  5851. SGTL2:        dc.l    0
  5852.         dc.l    TAG_DONE,0
  5853.  
  5854. DatStrGadTagList: dc.l    GTST_String,DatBuffer
  5855.         dc.l    GT_Underscore,'_'
  5856.         dc.l    GTST_MaxChars,32
  5857.         dc.l    TAG_DONE,0
  5858.  
  5859. DisabledTags:    dc.l    GA_DISABLED,TRUE
  5860.         dc.l    TAG_DONE,0
  5861.  
  5862. EnabledTags:    dc.l    GA_DISABLED,FALSE
  5863.         dc.l    TAG_DONE,0
  5864.  
  5865. ;Gadgets for edit window
  5866.  
  5867. NGDesc1Gad:    dc.w    10        ;gng_LeftEdge
  5868.         dc.w    0        ;gng_TopEdge
  5869.         dc.w    100        ;gng_Width
  5870.         dc.w    12        ;gng_Height
  5871.         dc.l    DescGadText1    ;gng_GadgetText
  5872.         dc.l    Topaz        ;gng_TextAttr
  5873.         dc.w    0        ;gng_GadgetID
  5874.         dc.l    PLACETEXT_IN    ;gng_Flags
  5875.         dc.l    0        ;gng_VisualInfo
  5876.         dc.l    0        ;gng_UserData
  5877.  
  5878. NGDesc2Gad:    dc.w    120        ;gng_LeftEdge
  5879.         dc.w    0        ;gng_TopEdge
  5880.         dc.w    300        ;gng_Width
  5881.         dc.w    12        ;gng_Height
  5882.         dc.l    DescGadText2    ;gng_GadgetText
  5883.         dc.l    Topaz        ;gng_TextAttr
  5884.         dc.w    0        ;gng_GadgetID
  5885.         dc.l    PLACETEXT_IN    ;gng_Flags
  5886.         dc.l    0        ;gng_VisualInfo
  5887.         dc.l    0        ;gng_UserData
  5888.  
  5889. NGStrGad1:    dc.w    10        ;gng_LeftEdge
  5890.         dc.w    0        ;gng_TopEdge
  5891.         dc.w    100        ;gng_Width
  5892.         dc.w    12        ;gng_Height
  5893.         dc.l    0        ;gng_GadgetText
  5894.         dc.l    Topaz        ;gng_TextAttr
  5895.         dc.w    1        ;gng_GadgetID
  5896.         dc.l    0        ;gng_Flags
  5897.         dc.l    0        ;gng_VisualInfo
  5898.         dc.l    0        ;gng_UserData
  5899.  
  5900. NGStrGad2:    dc.w    120        ;gng_LeftEdge
  5901.         dc.w    0        ;gng_TopEdge
  5902.         dc.w    300        ;gng_Width
  5903.         dc.w    12        ;gng_Height
  5904.         dc.l    0        ;gng_GadgetText
  5905.         dc.l    Topaz        ;gng_TextAttr
  5906.         dc.w    2        ;gng_GadgetID
  5907.         dc.l    0        ;gng_Flags
  5908.         dc.l    0        ;gng_VisualInfo
  5909.         dc.l    0        ;gng_UserData
  5910.  
  5911. NGStrGad3:    dc.w    10        ;gng_LeftEdge
  5912.         dc.w    0        ;gng_TopEdge
  5913.         dc.w    100        ;gng_Width
  5914.         dc.w    12        ;gng_Height
  5915.         dc.l    0        ;gng_GadgetText
  5916.         dc.l    Topaz        ;gng_TextAttr
  5917.         dc.w    1        ;gng_GadgetID
  5918.         dc.l    0        ;gng_Flags
  5919.         dc.l    0        ;gng_VisualInfo
  5920.         dc.l    0        ;gng_UserData
  5921.  
  5922. NGStrGad4:    dc.w    120        ;gng_LeftEdge
  5923.         dc.w    0        ;gng_TopEdge
  5924.         dc.w    300        ;gng_Width
  5925.         dc.w    12        ;gng_Height
  5926.         dc.l    0        ;gng_GadgetText
  5927.         dc.l    Topaz        ;gng_TextAttr
  5928.         dc.w    2        ;gng_GadgetID
  5929.         dc.l    0        ;gng_Flags
  5930.         dc.l    0        ;gng_VisualInfo
  5931.         dc.l    0        ;gng_UserData
  5932.  
  5933. NGStrGad5:    dc.w    10        ;gng_LeftEdge
  5934.         dc.w    0        ;gng_TopEdge
  5935.         dc.w    100        ;gng_Width
  5936.         dc.w    12        ;gng_Height
  5937.         dc.l    0        ;gng_GadgetText
  5938.         dc.l    Topaz        ;gng_TextAttr
  5939.         dc.w    1        ;gng_GadgetID
  5940.         dc.l    0        ;gng_Flags
  5941.         dc.l    0        ;gng_VisualInfo
  5942.         dc.l    0        ;gng_UserData
  5943.  
  5944. NGStrGad6:    dc.w    120        ;gng_LeftEdge
  5945.         dc.w    0        ;gng_TopEdge
  5946.         dc.w    300        ;gng_Width
  5947.         dc.w    12        ;gng_Height
  5948.         dc.l    0        ;gng_GadgetText
  5949.         dc.l    Topaz        ;gng_TextAttr
  5950.         dc.w    2        ;gng_GadgetID
  5951.         dc.l    0        ;gng_Flags
  5952.         dc.l    0        ;gng_VisualInfo
  5953.         dc.l    0        ;gng_UserData
  5954.  
  5955. NGStrGad7:    dc.w    10        ;gng_LeftEdge
  5956.         dc.w    0        ;gng_TopEdge
  5957.         dc.w    100        ;gng_Width
  5958.         dc.w    12        ;gng_Height
  5959.         dc.l    0        ;gng_GadgetText
  5960.         dc.l    Topaz        ;gng_TextAttr
  5961.         dc.w    1        ;gng_GadgetID
  5962.         dc.l    0        ;gng_Flags
  5963.         dc.l    0        ;gng_VisualInfo
  5964.         dc.l    0        ;gng_UserData
  5965.  
  5966. NGStrGad8:    dc.w    120        ;gng_LeftEdge
  5967.         dc.w    0        ;gng_TopEdge
  5968.         dc.w    300        ;gng_Width
  5969.         dc.w    12        ;gng_Height
  5970.         dc.l    0        ;gng_GadgetText
  5971.         dc.l    Topaz        ;gng_TextAttr
  5972.         dc.w    2        ;gng_GadgetID
  5973.         dc.l    0        ;gng_Flags
  5974.         dc.l    0        ;gng_VisualInfo
  5975.         dc.l    0        ;gng_UserData
  5976.  
  5977. NGStrGad9:    dc.w    10        ;gng_LeftEdge
  5978.         dc.w    0        ;gng_TopEdge
  5979.         dc.w    100        ;gng_Width
  5980.         dc.w    12        ;gng_Height
  5981.         dc.l    0        ;gng_GadgetText
  5982.         dc.l    Topaz        ;gng_TextAttr
  5983.         dc.w    1        ;gng_GadgetID
  5984.         dc.l    0        ;gng_Flags
  5985.         dc.l    0        ;gng_VisualInfo
  5986.         dc.l    0        ;gng_UserData
  5987.  
  5988. NGStrGad10:    dc.w    120        ;gng_LeftEdge
  5989.         dc.w    0        ;gng_TopEdge
  5990.         dc.w    300        ;gng_Width
  5991.         dc.w    12        ;gng_Height
  5992.         dc.l    0        ;gng_GadgetText
  5993.         dc.l    Topaz        ;gng_TextAttr
  5994.         dc.w    2        ;gng_GadgetID
  5995.         dc.l    0        ;gng_Flags
  5996.         dc.l    0        ;gng_VisualInfo
  5997.         dc.l    0        ;gng_UserData
  5998.  
  5999. NGStrGad11:    dc.w    10        ;gng_LeftEdge
  6000.         dc.w    0        ;gng_TopEdge
  6001.         dc.w    100        ;gng_Width
  6002.         dc.w    12        ;gng_Height
  6003.         dc.l    0        ;gng_GadgetText
  6004.         dc.l    Topaz        ;gng_TextAttr
  6005.         dc.w    1        ;gng_GadgetID
  6006.         dc.l    0        ;gng_Flags
  6007.         dc.l    0        ;gng_VisualInfo
  6008.         dc.l    0        ;gng_UserData
  6009.  
  6010. NGStrGad12:    dc.w    120        ;gng_LeftEdge
  6011.         dc.w    0        ;gng_TopEdge
  6012.         dc.w    300        ;gng_Width
  6013.         dc.w    12        ;gng_Height
  6014.         dc.l    0        ;gng_GadgetText
  6015.         dc.l    Topaz        ;gng_TextAttr
  6016.         dc.w    2        ;gng_GadgetID
  6017.         dc.l    0        ;gng_Flags
  6018.         dc.l    0        ;gng_VisualInfo
  6019.         dc.l    0        ;gng_UserData
  6020.  
  6021. NGStrGad13:    dc.w    10        ;gng_LeftEdge
  6022.         dc.w    0        ;gng_TopEdge
  6023.         dc.w    100        ;gng_Width
  6024.         dc.w    12        ;gng_Height
  6025.         dc.l    0        ;gng_GadgetText
  6026.         dc.l    Topaz        ;gng_TextAttr
  6027.         dc.w    1        ;gng_GadgetID
  6028.         dc.l    0        ;gng_Flags
  6029.         dc.l    0        ;gng_VisualInfo
  6030.         dc.l    0        ;gng_UserData
  6031.  
  6032. NGStrGad14:    dc.w    120        ;gng_LeftEdge
  6033.         dc.w    0        ;gng_TopEdge
  6034.         dc.w    300        ;gng_Width
  6035.         dc.w    12        ;gng_Height
  6036.         dc.l    0        ;gng_GadgetText
  6037.         dc.l    Topaz        ;gng_TextAttr
  6038.         dc.w    2        ;gng_GadgetID
  6039.         dc.l    0        ;gng_Flags
  6040.         dc.l    0        ;gng_VisualInfo
  6041.         dc.l    0        ;gng_UserData
  6042.  
  6043. NGStrGad15:    dc.w    10        ;gng_LeftEdge
  6044.         dc.w    0        ;gng_TopEdge
  6045.         dc.w    100        ;gng_Width
  6046.         dc.w    12        ;gng_Height
  6047.         dc.l    0        ;gng_GadgetText
  6048.         dc.l    Topaz        ;gng_TextAttr
  6049.         dc.w    1        ;gng_GadgetID
  6050.         dc.l    0        ;gng_Flags
  6051.         dc.l    0        ;gng_VisualInfo
  6052.         dc.l    0        ;gng_UserData
  6053.  
  6054. NGStrGad16:    dc.w    120        ;gng_LeftEdge
  6055.         dc.w    0        ;gng_TopEdge
  6056.         dc.w    300        ;gng_Width
  6057.         dc.w    12        ;gng_Height
  6058.         dc.l    0        ;gng_GadgetText
  6059.         dc.l    Topaz        ;gng_TextAttr
  6060.         dc.w    2        ;gng_GadgetID
  6061.         dc.l    0        ;gng_Flags
  6062.         dc.l    0        ;gng_VisualInfo
  6063.         dc.l    0        ;gng_UserData
  6064.  
  6065. NGStrGad17:    dc.w    10        ;gng_LeftEdge
  6066.         dc.w    0        ;gng_TopEdge
  6067.         dc.w    100        ;gng_Width
  6068.         dc.w    12        ;gng_Height
  6069.         dc.l    0        ;gng_GadgetText
  6070.         dc.l    Topaz        ;gng_TextAttr
  6071.         dc.w    1        ;gng_GadgetID
  6072.         dc.l    0        ;gng_Flags
  6073.         dc.l    0        ;gng_VisualInfo
  6074.         dc.l    0        ;gng_UserData
  6075.  
  6076. NGStrGad18:    dc.w    120        ;gng_LeftEdge
  6077.         dc.w    0        ;gng_TopEdge
  6078.         dc.w    300        ;gng_Width
  6079.         dc.w    12        ;gng_Height
  6080.         dc.l    0        ;gng_GadgetText
  6081.         dc.l    Topaz        ;gng_TextAttr
  6082.         dc.w    2        ;gng_GadgetID
  6083.         dc.l    0        ;gng_Flags
  6084.         dc.l    0        ;gng_VisualInfo
  6085.         dc.l    0        ;gng_UserData
  6086.  
  6087. NGStrGad19:    dc.w    10        ;gng_LeftEdge
  6088.         dc.w    0        ;gng_TopEdge
  6089.         dc.w    100        ;gng_Width
  6090.         dc.w    12        ;gng_Height
  6091.         dc.l    0        ;gng_GadgetText
  6092.         dc.l    Topaz        ;gng_TextAttr
  6093.         dc.w    1        ;gng_GadgetID
  6094.         dc.l    0        ;gng_Flags
  6095.         dc.l    0        ;gng_VisualInfo
  6096.         dc.l    0        ;gng_UserData
  6097.  
  6098. NGStrGad20:    dc.w    120        ;gng_LeftEdge
  6099.         dc.w    0        ;gng_TopEdge
  6100.         dc.w    300        ;gng_Width
  6101.         dc.w    12        ;gng_Height
  6102.         dc.l    0        ;gng_GadgetText
  6103.         dc.l    Topaz        ;gng_TextAttr
  6104.         dc.w    2        ;gng_GadgetID
  6105.         dc.l    0        ;gng_Flags
  6106.         dc.l    0        ;gng_VisualInfo
  6107.         dc.l    0        ;gng_UserData
  6108.  
  6109. NGGetGad1:    dc.w    185        ;gng_LeftEdge
  6110.         dc.w    0        ;gng_TopEdge
  6111.         dc.w    60        ;gng_Width
  6112.         dc.w    12        ;gng_Height
  6113.         dc.l    GetGadText1    ;gng_GadgetText
  6114.         dc.l    Topaz        ;gng_TextAttr
  6115.         dc.w    55        ;gng_GadgetID
  6116.         dc.l    PLACETEXT_IN    ;gng_Flags
  6117.         dc.l    0        ;gng_VisualInfo
  6118.         dc.l    0        ;gng_UserData
  6119.  
  6120. DescGadTagList: dc.l    GTTX_Border,1
  6121.         dc.l    TAG_DONE,0
  6122.  
  6123. StrGadTagList1: dc.l    GTST_MaxChars,GADLENG1-1
  6124.         dc.l    TAG_DONE,0
  6125. StrGadTagList2: dc.l    GTST_MaxChars,GADLENG2-1
  6126.         dc.l    TAG_DONE,0
  6127. StrGadTagList3: dc.l    GTIN_Number,120
  6128.         dc.l    TAG_DONE,0
  6129.  
  6130. ;Priority gadget
  6131.  
  6132. NGStrGad21:    dc.w    60        ;gng_LeftEdge
  6133.         dc.w    0        ;gng_TopEdge
  6134.         dc.w    80        ;gng_Width
  6135.         dc.w    12        ;gng_Height
  6136.         dc.l    PriGadText1    ;gng_GadgetText
  6137.         dc.l    Topaz        ;gng_TextAttr
  6138.         dc.w    0        ;gng_GadgetID
  6139.         dc.l    PLACETEXT_BELOW ;gng_Flags
  6140.         dc.l    0        ;gng_VisualInfo
  6141.         dc.l    0        ;gng_UserData
  6142.  
  6143. ;Gadgets for error window
  6144.  
  6145. NGDesc3Gad:    dc.w    10        ;gng_LeftEdge
  6146.         dc.w    0        ;gng_TopEdge
  6147.         dc.w    100        ;gng_Width
  6148.         dc.w    12        ;gng_Height
  6149.         dc.l    DescGadText1.1    ;gng_GadgetText
  6150.         dc.l    Topaz        ;gng_TextAttr
  6151.         dc.w    0        ;gng_GadgetID
  6152.         dc.l    PLACETEXT_IN    ;gng_Flags
  6153.         dc.l    0        ;gng_VisualInfo
  6154.         dc.l    0        ;gng_UserData
  6155.  
  6156. NGDesc4Gad:    dc.w    120        ;gng_LeftEdge
  6157.         dc.w    0        ;gng_TopEdge
  6158.         dc.w    300        ;gng_Width
  6159.         dc.w    12        ;gng_Height
  6160.         dc.l    DescGadText2    ;gng_GadgetText
  6161.         dc.l    Topaz        ;gng_TextAttr
  6162.         dc.w    0        ;gng_GadgetID
  6163.         dc.l    PLACETEXT_IN    ;gng_Flags
  6164.         dc.l    0        ;gng_VisualInfo
  6165.         dc.l    0        ;gng_UserData
  6166.  
  6167. NGDesc5Gad:    dc.w    10        ;gng_LeftEdge
  6168.         dc.w    0        ;gng_TopEdge
  6169.         dc.w    100        ;gng_Width
  6170.         dc.w    12        ;gng_Height
  6171.         dc.l    DescGadText3    ;gng_GadgetText
  6172.         dc.l    Topaz        ;gng_TextAttr
  6173.         dc.w    1        ;gng_GadgetID
  6174.         dc.l    PLACETEXT_IN    ;gng_Flags
  6175.         dc.l    0        ;gng_VisualInfo
  6176.         dc.l    0        ;gng_UserData
  6177.  
  6178. NGStrGad22:    dc.w    120        ;gng_LeftEdge
  6179.         dc.w    0        ;gng_TopEdge
  6180.         dc.w    300        ;gng_Width
  6181.         dc.w    12        ;gng_Height
  6182.         dc.l    0        ;gng_GadgetText
  6183.         dc.l    Topaz        ;gng_TextAttr
  6184.         dc.w    2        ;gng_GadgetID
  6185.         dc.l    0        ;gng_Flags
  6186.         dc.l    0        ;gng_VisualInfo
  6187.         dc.l    0        ;gng_UserData
  6188.  
  6189. NGDesc6Gad:    dc.w    10        ;gng_LeftEdge
  6190.         dc.w    0        ;gng_TopEdge
  6191.         dc.w    100        ;gng_Width
  6192.         dc.w    12        ;gng_Height
  6193.         dc.l    DescGadText4    ;gng_GadgetText
  6194.         dc.l    Topaz        ;gng_TextAttr
  6195.         dc.w    1        ;gng_GadgetID
  6196.         dc.l    PLACETEXT_IN    ;gng_Flags
  6197.         dc.l    0        ;gng_VisualInfo
  6198.         dc.l    0        ;gng_UserData
  6199.  
  6200. NGStrGad23:    dc.w    120        ;gng_LeftEdge
  6201.         dc.w    0        ;gng_TopEdge
  6202.         dc.w    300        ;gng_Width
  6203.         dc.w    12        ;gng_Height
  6204.         dc.l    0        ;gng_GadgetText
  6205.         dc.l    Topaz        ;gng_TextAttr
  6206.         dc.w    2        ;gng_GadgetID
  6207.         dc.l    0        ;gng_Flags
  6208.         dc.l    0        ;gng_VisualInfo
  6209.         dc.l    0        ;gng_UserData
  6210.  
  6211. NGDesc7Gad:    dc.w    10        ;gng_LeftEdge
  6212.         dc.w    0        ;gng_TopEdge
  6213.         dc.w    100        ;gng_Width
  6214.         dc.w    12        ;gng_Height
  6215.         dc.l    DescGadText5    ;gng_GadgetText
  6216.         dc.l    Topaz        ;gng_TextAttr
  6217.         dc.w    1        ;gng_GadgetID
  6218.         dc.l    PLACETEXT_IN    ;gng_Flags
  6219.         dc.l    0        ;gng_VisualInfo
  6220.         dc.l    0        ;gng_UserData
  6221.  
  6222. NGStrGad24:    dc.w    120        ;gng_LeftEdge
  6223.         dc.w    0        ;gng_TopEdge
  6224.         dc.w    300        ;gng_Width
  6225.         dc.w    12        ;gng_Height
  6226.         dc.l    0        ;gng_GadgetText
  6227.         dc.l    Topaz        ;gng_TextAttr
  6228.         dc.w    2        ;gng_GadgetID
  6229.         dc.l    0        ;gng_Flags
  6230.         dc.l    0        ;gng_VisualInfo
  6231.         dc.l    0        ;gng_UserData
  6232.  
  6233. NGDesc8Gad:    dc.w    10        ;gng_LeftEdge
  6234.         dc.w    0        ;gng_TopEdge
  6235.         dc.w    100        ;gng_Width
  6236.         dc.w    12        ;gng_Height
  6237.         dc.l    DescGadText6    ;gng_GadgetText
  6238.         dc.l    Topaz        ;gng_TextAttr
  6239.         dc.w    1        ;gng_GadgetID
  6240.         dc.l    PLACETEXT_IN    ;gng_Flags
  6241.         dc.l    0        ;gng_VisualInfo
  6242.         dc.l    0        ;gng_UserData
  6243.  
  6244. NGStrGad25:    dc.w    120        ;gng_LeftEdge
  6245.         dc.w    0        ;gng_TopEdge
  6246.         dc.w    300        ;gng_Width
  6247.         dc.w    12        ;gng_Height
  6248.         dc.l    0        ;gng_GadgetText
  6249.         dc.l    Topaz        ;gng_TextAttr
  6250.         dc.w    2        ;gng_GadgetID
  6251.         dc.l    0        ;gng_Flags
  6252.         dc.l    0        ;gng_VisualInfo
  6253.         dc.l    0        ;gng_UserData
  6254.  
  6255. NGDesc9Gad:    dc.w    10        ;gng_LeftEdge
  6256.         dc.w    0        ;gng_TopEdge
  6257.         dc.w    100        ;gng_Width
  6258.         dc.w    12        ;gng_Height
  6259.         dc.l    DescGadText7    ;gng_GadgetText
  6260.         dc.l    Topaz        ;gng_TextAttr
  6261.         dc.w    1        ;gng_GadgetID
  6262.         dc.l    PLACETEXT_IN    ;gng_Flags
  6263.         dc.l    0        ;gng_VisualInfo
  6264.         dc.l    0        ;gng_UserData
  6265.  
  6266. NGStrGad26:    dc.w    120        ;gng_LeftEdge
  6267.         dc.w    0        ;gng_TopEdge
  6268.         dc.w    300        ;gng_Width
  6269.         dc.w    12        ;gng_Height
  6270.         dc.l    0        ;gng_GadgetText
  6271.         dc.l    Topaz        ;gng_TextAttr
  6272.         dc.w    2        ;gng_GadgetID
  6273.         dc.l    0        ;gng_Flags
  6274.         dc.l    0        ;gng_VisualInfo
  6275.         dc.l    0        ;gng_UserData
  6276.  
  6277. NGDesc10Gad:    dc.w    10        ;gng_LeftEdge
  6278.         dc.w    0        ;gng_TopEdge
  6279.         dc.w    100        ;gng_Width
  6280.         dc.w    12        ;gng_Height
  6281.         dc.l    DescGadText8    ;gng_GadgetText
  6282.         dc.l    Topaz        ;gng_TextAttr
  6283.         dc.w    1        ;gng_GadgetID
  6284.         dc.l    PLACETEXT_IN    ;gng_Flags
  6285.         dc.l    0        ;gng_VisualInfo
  6286.         dc.l    0        ;gng_UserData
  6287.  
  6288. NGStrGad27:    dc.w    120        ;gng_LeftEdge
  6289.         dc.w    0        ;gng_TopEdge
  6290.         dc.w    300        ;gng_Width
  6291.         dc.w    12        ;gng_Height
  6292.         dc.l    0        ;gng_GadgetText
  6293.         dc.l    Topaz        ;gng_TextAttr
  6294.         dc.w    2        ;gng_GadgetID
  6295.         dc.l    0        ;gng_Flags
  6296.         dc.l    0        ;gng_VisualInfo
  6297.         dc.l    0        ;gng_UserData
  6298.  
  6299. NGDesc11Gad:    dc.w    10        ;gng_LeftEdge
  6300.         dc.w    0        ;gng_TopEdge
  6301.         dc.w    100        ;gng_Width
  6302.         dc.w    12        ;gng_Height
  6303.         dc.l    DescGadText9    ;gng_GadgetText
  6304.         dc.l    Topaz        ;gng_TextAttr
  6305.         dc.w    1        ;gng_GadgetID
  6306.         dc.l    PLACETEXT_IN    ;gng_Flags
  6307.         dc.l    0        ;gng_VisualInfo
  6308.         dc.l    0        ;gng_UserData
  6309.  
  6310. NGStrGad28:    dc.w    120        ;gng_LeftEdge
  6311.         dc.w    0        ;gng_TopEdge
  6312.         dc.w    300        ;gng_Width
  6313.         dc.w    12        ;gng_Height
  6314.         dc.l    0        ;gng_GadgetText
  6315.         dc.l    Topaz        ;gng_TextAttr
  6316.         dc.w    2        ;gng_GadgetID
  6317.         dc.l    0        ;gng_Flags
  6318.         dc.l    0        ;gng_VisualInfo
  6319.         dc.l    0        ;gng_UserData
  6320.  
  6321. NGDesc12Gad:    dc.w    10        ;gng_LeftEdge
  6322.         dc.w    0        ;gng_TopEdge
  6323.         dc.w    100        ;gng_Width
  6324.         dc.w    12        ;gng_Height
  6325.         dc.l    DescGadText10    ;gng_GadgetText
  6326.         dc.l    Topaz        ;gng_TextAttr
  6327.         dc.w    1        ;gng_GadgetID
  6328.         dc.l    PLACETEXT_IN    ;gng_Flags
  6329.         dc.l    0        ;gng_VisualInfo
  6330.         dc.l    0        ;gng_UserData
  6331.  
  6332. NGStrGad29:    dc.w    120        ;gng_LeftEdge
  6333.         dc.w    0        ;gng_TopEdge
  6334.         dc.w    300        ;gng_Width
  6335.         dc.w    12        ;gng_Height
  6336.         dc.l    0        ;gng_GadgetText
  6337.         dc.l    Topaz        ;gng_TextAttr
  6338.         dc.w    2        ;gng_GadgetID
  6339.         dc.l    0        ;gng_Flags
  6340.         dc.l    0        ;gng_VisualInfo
  6341.         dc.l    0        ;gng_UserData
  6342.  
  6343. NGDesc13Gad:    dc.w    10        ;gng_LeftEdge
  6344.         dc.w    0        ;gng_TopEdge
  6345.         dc.w    100        ;gng_Width
  6346.         dc.w    12        ;gng_Height
  6347.         dc.l    DescGadText11    ;gng_GadgetText
  6348.         dc.l    Topaz        ;gng_TextAttr
  6349.         dc.w    1        ;gng_GadgetID
  6350.         dc.l    PLACETEXT_IN    ;gng_Flags
  6351.         dc.l    0        ;gng_VisualInfo
  6352.         dc.l    0        ;gng_UserData
  6353.  
  6354. NGStrGad30:    dc.w    120        ;gng_LeftEdge
  6355.         dc.w    0        ;gng_TopEdge
  6356.         dc.w    300        ;gng_Width
  6357.         dc.w    12        ;gng_Height
  6358.         dc.l    0        ;gng_GadgetText
  6359.         dc.l    Topaz        ;gng_TextAttr
  6360.         dc.w    2        ;gng_GadgetID
  6361.         dc.l    0        ;gng_Flags
  6362.         dc.l    0        ;gng_VisualInfo
  6363.         dc.l    0        ;gng_UserData
  6364.  
  6365. NGGetGad2:    dc.w    185        ;gng_LeftEdge
  6366.         dc.w    0        ;gng_TopEdge
  6367.         dc.w    60        ;gng_Width
  6368.         dc.w    12        ;gng_Height
  6369.         dc.l    GetGadText1    ;gng_GadgetText
  6370.         dc.l    Topaz        ;gng_TextAttr
  6371.         dc.w    55        ;gng_GadgetID
  6372.         dc.l    PLACETEXT_IN    ;gng_Flags
  6373.         dc.l    0        ;gng_VisualInfo
  6374.         dc.l    0        ;gng_UserData
  6375.  
  6376. ;Menus
  6377.  
  6378. Menu1Name:    dc.b    "Project",0
  6379. Menu2Name:    dc.b    "Commands",0
  6380. Menu3Name:    dc.b    "Setup",0
  6381.  
  6382. LoadMenuText1:    dc.b    "Load",0
  6383. LoadCommKey:    dc.b    "L",0
  6384. SaveMenuText1:    dc.b    "Save",0
  6385. SaveCommKey:    dc.b    "S",0
  6386. AboutMenuText1: dc.b    "About...",0
  6387. AboutCommKey:    dc.b    "?",0
  6388. QuitMenuText1:    dc.b    "Quit",0
  6389. QuitCommKey:    dc.b    "Q",0
  6390. EditMenuText1:    dc.b    "Edit/Learn",0
  6391. EditCommKey:    dc.b    "E",0
  6392. ErrorMenuText1:    dc.b    "Errors",0
  6393. ErrorCommKey:    dc.b    "R",0
  6394.  
  6395. TypeMenuText1:    dc.b    "Sampler",0
  6396. PerfSMenuText1: dc.b    "PerfectSound",0
  6397. Type1CommKey:    dc.b    "1",0
  6398. SoundMMenuText1: dc.b    "SoundMaster",0
  6399. Type2CommKey:    dc.b    "2",0
  6400. DSSMenuText1:    dc.b    "GVP DSS 8",0
  6401. Type3CommKey:    dc.b    "3",0
  6402. GenericMenuText1: dc.b    "Generic",0
  6403. Type4CommKey:    dc.b    "4",0
  6404.  
  6405. ResMenuText1:    dc.b    "Resolution",0
  6406. ResLoMenuText1: dc.b    "Low",0
  6407. Res1CommKey:    dc.b    "-",0
  6408. ResHiMenuText1: dc.b    "High",0
  6409. Res2CommKey:    dc.b    "+",0
  6410.  
  6411. AccMenuText1:    dc.b    "Accuracy",0
  6412. AccLo1MenuText1: dc.b    "Lowest",0
  6413. Acc1CommKey:    dc.b    "T",0
  6414. AccLo2MenuText1: dc.b    "Lower",0
  6415. Acc2CommKey:    dc.b    "W",0
  6416. AccLo3MenuText1: dc.b    "Low",0
  6417. Acc3CommKey:    dc.b    "O",0
  6418. AccNoMenuText1: dc.b    "Normal",0
  6419. Acc4CommKey:    dc.b    "N",0
  6420. AccHi1MenuText1: dc.b    "High",0
  6421. Acc5CommKey:    dc.b    "H",0
  6422. AccHi2MenuText1: dc.b    "Higher",0
  6423. Acc6CommKey:    dc.b    "I",0
  6424. AccHi3MenuText1: dc.b    "Even higher",0
  6425. Acc7CommKey:    dc.b    "G",0
  6426. AccHi4MenuText1: dc.b    "Maximum",0
  6427. Acc8CommKey:    dc.b    "M",0
  6428.  
  6429. ChanMenuText1:    dc.b    "Channel",0
  6430. Chan1MenuText1: dc.b    "Left",0
  6431. Chan1CommKey:    dc.b    ",",0
  6432. Chan2MenuText1: dc.b    "Right",0
  6433. Chan2CommKey:    dc.b    ".",0
  6434.  
  6435. InputMenuText1:    dc.b    "Input level",0
  6436. Input1MenuText1: dc.b    "Microphone",0
  6437. Input1CommKey:    dc.b    "/",0
  6438. Input2MenuText1: dc.b    "Line",0
  6439. Input2CommKey:    dc.b    "*",0
  6440.  
  6441. TimerMenuText1: dc.b    "CIA Timer",0
  6442. TimerAMenuText1: dc.b    "Timer A",0
  6443. TimerACommKey:    dc.b    "A",0
  6444. TimerBMenuText1: dc.b    "Timer B",0
  6445. TimerBCommKey:    dc.b    "B",0
  6446.  
  6447. WakeMenuText1:    dc.b    "Wake up",0
  6448. WakeMenuText2:    dc.b    "0 Secs",0
  6449. WakeCommKey1:    dc.b    "5",0
  6450. WakeMenuText3:    dc.b    "5 Secs",0
  6451. WakeCommKey2:    dc.b    "6",0
  6452. WakeMenuText4:    dc.b    "10 Secs",0
  6453. WakeCommKey3:    dc.b    "7",0
  6454. WakeMenuText5:    dc.b    "15 Secs",0
  6455. WakeCommKey4:    dc.b    "8",0
  6456. WakeMenuText6:    dc.b    "20 Secs",0
  6457. WakeCommKey5:    dc.b    "9",0
  6458.  
  6459. PriMenuText1:    dc.b    "Priority...",0
  6460. PriCommKey:    dc.b    "P",0
  6461.  
  6462. ConfMenuText1:    dc.b    "Confirm",0
  6463. ConfCommKey:    dc.b    "C",0
  6464.  
  6465. Menu1Name2:    dc.b    "Page",0
  6466. EditMenu1Text1: dc.b    "Commands  1-10",0
  6467. Edit1CommKey:    dc.b    "1",0
  6468. EditMenu2Text1: dc.b    "Commands 11-20",0
  6469. Edit2CommKey:    dc.b    "2",0
  6470. EditMenu3Text1: dc.b    "Commands 21-30",0
  6471. Edit3CommKey:    dc.b    "3",0
  6472. EditMenu4Text1: dc.b    "Commands 31-40",0
  6473. Edit4CommKey:    dc.b    "4",0
  6474. EditMenu5Text1: dc.b    "Commands 41-50",0
  6475. Edit5CommKey:    dc.b    "5",0
  6476. EditMenu6Text1: dc.b    "Commands 51-60",0
  6477. Edit6CommKey:    dc.b    "6",0
  6478.         ds.l    0
  6479.  
  6480. MNProjectMenu1: dc.b    NM_TITLE        ;gnm_Type
  6481.         dc.b    0            ;gnm_Pad
  6482.         dc.l    Menu1Name        ;gnm_Label
  6483.         dc.l    0            ;gnm_CommKey
  6484.         dc.w    0            ;gnm_Flags
  6485.         dc.l    0            ;gnm_MutualExclude
  6486.         dc.l    0            ;gnm_UserData
  6487.  
  6488. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  6489.         dc.b    0            ;gnm_Pad
  6490.         dc.l    LoadMenuText1        ;gnm_Label
  6491.         dc.l    LoadCommKey        ;gnm_CommKey
  6492.         dc.w    0            ;gnm_Flags
  6493.         dc.l    0            ;gnm_MutualExclude
  6494.         dc.l    0            ;gnm_UserData
  6495.  
  6496. MNSave1:    dc.b    NM_ITEM            ;gnm_Type
  6497.         dc.b    0            ;gnm_Pad
  6498.         dc.l    SaveMenuText1        ;gnm_Label
  6499.         dc.l    SaveCommKey        ;gnm_CommKey
  6500.         dc.w    0            ;gnm_Flags
  6501.         dc.l    0            ;gnm_MutualExclude
  6502.         dc.l    0            ;gnm_UserData
  6503.  
  6504. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  6505.         dc.b    0            ;gnm_Pad
  6506.         dc.l    AboutMenuText1        ;gnm_Label
  6507.         dc.l    AboutCommKey        ;gnm_CommKey
  6508.         dc.w    0            ;gnm_Flags
  6509.         dc.l    0            ;gnm_MutualExclude
  6510.         dc.l    0            ;gnm_UserData
  6511.  
  6512. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  6513.         dc.b    0            ;gnm_Pad
  6514.         dc.l    NM_BARLABEL        ;gnm_Label
  6515.         dc.l    0            ;gnm_CommKey
  6516.         dc.w    0            ;gnm_Flags
  6517.         dc.l    0            ;gnm_MutualExclude
  6518.         dc.l    0            ;gnm_UserData
  6519.  
  6520. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  6521.         dc.b    0            ;gnm_Pad
  6522.         dc.l    QuitMenuText1        ;gnm_Label
  6523.         dc.l    QuitCommKey        ;gnm_CommKey
  6524.         dc.w    0            ;gnm_Flags
  6525.         dc.l    0            ;gnm_MutualExclude
  6526.         dc.l    0            ;gnm_UserData
  6527.  
  6528. MNCmdMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6529.         dc.b    0            ;gnm_Pad
  6530.         dc.l    Menu2Name        ;gnm_Label
  6531.         dc.l    0            ;gnm_CommKey
  6532.         dc.w    0            ;gnm_Flags
  6533.         dc.l    0            ;gnm_MutualExclude
  6534.         dc.l    0            ;gnm_UserData
  6535.  
  6536. MNEdit1:    dc.b    NM_ITEM            ;gnm_Type
  6537.         dc.b    0            ;gnm_Pad
  6538.         dc.l    EditMenuText1        ;gnm_Label
  6539.         dc.l    EditCommKey        ;gnm_CommKey
  6540.         dc.w    0            ;gnm_Flags
  6541.         dc.l    0            ;gnm_MutualExclude
  6542.         dc.l    0            ;gnm_UserData
  6543.  
  6544. MNError2:    dc.b    NM_ITEM            ;gnm_Type
  6545.         dc.b    0            ;gnm_Pad
  6546.         dc.l    ErrorMenuText1        ;gnm_Label
  6547.         dc.l    ErrorCommKey        ;gnm_CommKey
  6548.         dc.w    0            ;gnm_Flags
  6549.         dc.l    0            ;gnm_MutualExclude
  6550.         dc.l    0            ;gnm_UserData
  6551.  
  6552. MNSetUpMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6553.         dc.b    0            ;gnm_Pad
  6554.         dc.l    Menu3Name        ;gnm_Label
  6555.         dc.l    0            ;gnm_CommKey
  6556.         dc.w    0            ;gnm_Flags
  6557.         dc.l    0            ;gnm_MutualExclude
  6558.         dc.l    0            ;gnm_UserData
  6559.  
  6560. MNType1:    dc.b    NM_ITEM            ;gnm_Type
  6561.         dc.b    0            ;gnm_Pad
  6562.         dc.l    TypeMenuText1        ;gnm_Label
  6563.         dc.l    0            ;gnm_CommKey
  6564.         dc.w    0            ;gnm_Flags
  6565.         dc.l    0            ;gnm_MutualExclude
  6566.         dc.l    0            ;gnm_UserData
  6567.  
  6568. MNTypeSub1:    dc.b    NM_SUB            ;gnm_Type
  6569.         dc.b    0            ;gnm_Pad
  6570.         dc.l    PerfSMenuText1        ;gnm_Label
  6571.         dc.l    Type1CommKey        ;gnm_CommKey
  6572.         dc.w    CHECKIT            ;gnm_Flags
  6573.         dc.l    ~1            ;gnm_MutualExclude
  6574.         dc.l    0            ;gnm_UserData
  6575.  
  6576. MNTypeSub2:    dc.b    NM_SUB            ;gnm_Type
  6577.         dc.b    0            ;gnm_Pad
  6578.         dc.l    SoundMMenuText1        ;gnm_Label
  6579.         dc.l    Type2CommKey        ;gnm_CommKey
  6580.         dc.w    CHECKIT            ;gnm_Flags
  6581.         dc.l    ~2            ;gnm_MutualExclude
  6582.         dc.l    0            ;gnm_UserData
  6583.  
  6584. MNTypeSub3:    dc.b    NM_SUB            ;gnm_Type
  6585.         dc.b    0            ;gnm_Pad
  6586.         dc.l    DSSMenuText1        ;gnm_Label
  6587.         dc.l    Type3CommKey        ;gnm_CommKey
  6588.         dc.w    CHECKIT            ;gnm_Flags
  6589.         dc.l    ~4            ;gnm_MutualExclude
  6590.         dc.l    0            ;gnm_UserData
  6591.  
  6592. MNTypeSub4:    dc.b    NM_SUB            ;gnm_Type
  6593.         dc.b    0            ;gnm_Pad
  6594.         dc.l    GenericMenuText1    ;gnm_Label
  6595.         dc.l    Type4CommKey        ;gnm_CommKey
  6596.         dc.w    CHECKIT            ;gnm_Flags
  6597.         dc.l    ~8            ;gnm_MutualExclude
  6598.         dc.l    0            ;gnm_UserData
  6599.  
  6600. MNRes1:        dc.b    NM_ITEM            ;gnm_Type
  6601.         dc.b    0            ;gnm_Pad
  6602.         dc.l    ResMenuText1        ;gnm_Label
  6603.         dc.l    0            ;gnm_CommKey
  6604.         dc.w    0            ;gnm_Flags
  6605.         dc.l    0            ;gnm_MutualExclude
  6606.         dc.l    0            ;gnm_UserData
  6607.  
  6608. MNResSub1:    dc.b    NM_SUB            ;gnm_Type
  6609.         dc.b    0            ;gnm_Pad
  6610.         dc.l    ResLoMenuText1        ;gnm_Label
  6611.         dc.l    Res1CommKey        ;gnm_CommKey
  6612.         dc.w    CHECKIT            ;gnm_Flags
  6613.         dc.l    ~1            ;gnm_MutualExclude
  6614.         dc.l    0            ;gnm_UserData
  6615.  
  6616. MNResSub2:    dc.b    NM_SUB            ;gnm_Type
  6617.         dc.b    0            ;gnm_Pad
  6618.         dc.l    ResHiMenuText1        ;gnm_Label
  6619.         dc.l    Res2CommKey        ;gnm_CommKey
  6620.         dc.w    CHECKIT            ;gnm_Flags
  6621.         dc.l    ~2            ;gnm_MutualExclude
  6622.         dc.l    0            ;gnm_UserData
  6623.  
  6624. MNAccuracy1:    dc.b    NM_ITEM            ;gnm_Type
  6625.         dc.b    0            ;gnm_Pad
  6626.         dc.l    AccMenuText1        ;gnm_Label
  6627.         dc.l    0            ;gnm_CommKey
  6628.         dc.w    0            ;gnm_Flags
  6629.         dc.l    0            ;gnm_MutualExclude
  6630.         dc.l    0            ;gnm_UserData
  6631.  
  6632. MNAccurarySub1:    dc.b    NM_SUB            ;gnm_Type
  6633.         dc.b    0            ;gnm_Pad
  6634.         dc.l    AccLo1MenuText1        ;gnm_Label
  6635.         dc.l    Acc1CommKey        ;gnm_CommKey
  6636.         dc.w    CHECKIT            ;gnm_Flags
  6637.         dc.l    ~1            ;gnm_MutualExclude
  6638.         dc.l    0            ;gnm_UserData
  6639.  
  6640. MNAccurarySub2:    dc.b    NM_SUB            ;gnm_Type
  6641.         dc.b    0            ;gnm_Pad
  6642.         dc.l    AccLo2MenuText1        ;gnm_Label
  6643.         dc.l    Acc2CommKey        ;gnm_CommKey
  6644.         dc.w    CHECKIT            ;gnm_Flags
  6645.         dc.l    ~2            ;gnm_MutualExclude
  6646.         dc.l    0            ;gnm_UserData
  6647.  
  6648. MNAccurarySub3:    dc.b    NM_SUB            ;gnm_Type
  6649.         dc.b    0            ;gnm_Pad
  6650.         dc.l    AccLo3MenuText1        ;gnm_Label
  6651.         dc.l    Acc3CommKey        ;gnm_CommKey
  6652.         dc.w    CHECKIT            ;gnm_Flags
  6653.         dc.l    ~4            ;gnm_MutualExclude
  6654.         dc.l    0            ;gnm_UserData
  6655.  
  6656. MNAccurarySub4:    dc.b    NM_SUB            ;gnm_Type
  6657.         dc.b    0            ;gnm_Pad
  6658.         dc.l    AccNoMenuText1        ;gnm_Label
  6659.         dc.l    Acc4CommKey        ;gnm_CommKey
  6660.         dc.w    CHECKIT            ;gnm_Flags
  6661.         dc.l    ~8            ;gnm_MutualExclude
  6662.         dc.l    0            ;gnm_UserData
  6663.  
  6664. MNAccuracySub5:    dc.b    NM_SUB            ;gnm_Type
  6665.         dc.b    0            ;gnm_Pad
  6666.         dc.l    AccHi1MenuText1        ;gnm_Label
  6667.         dc.l    Acc5CommKey        ;gnm_CommKey
  6668.         dc.w    CHECKIT            ;gnm_Flags
  6669.         dc.l    ~16            ;gnm_MutualExclude
  6670.         dc.l    0            ;gnm_UserData
  6671.  
  6672. MNAccuracySub6:    dc.b    NM_SUB            ;gnm_Type
  6673.         dc.b    0            ;gnm_Pad
  6674.         dc.l    AccHi2MenuText1        ;gnm_Label
  6675.         dc.l    Acc6CommKey        ;gnm_CommKey
  6676.         dc.w    CHECKIT            ;gnm_Flags
  6677.         dc.l    ~32            ;gnm_MutualExclude
  6678.         dc.l    0            ;gnm_UserData
  6679.  
  6680. MNAccuracySub7:    dc.b    NM_SUB            ;gnm_Type
  6681.         dc.b    0            ;gnm_Pad
  6682.         dc.l    AccHi3MenuText1        ;gnm_Label
  6683.         dc.l    Acc7CommKey        ;gnm_CommKey
  6684.         dc.w    CHECKIT            ;gnm_Flags
  6685.         dc.l    ~64            ;gnm_MutualExclude
  6686.         dc.l    0            ;gnm_UserData
  6687.  
  6688. MNAccuracySub8:    dc.b    NM_SUB            ;gnm_Type
  6689.         dc.b    0            ;gnm_Pad
  6690.         dc.l    AccHi4MenuText1        ;gnm_Label
  6691.         dc.l    Acc8CommKey        ;gnm_CommKey
  6692.         dc.w    CHECKIT            ;gnm_Flags
  6693.         dc.l    ~128            ;gnm_MutualExclude
  6694.         dc.l    0            ;gnm_UserData
  6695.  
  6696. MNChannel1:    dc.b    NM_ITEM            ;gnm_Type
  6697.         dc.b    0            ;gnm_Pad
  6698.         dc.l    ChanMenuText1        ;gnm_Label
  6699.         dc.l    0            ;gnm_CommKey
  6700.         dc.w    0            ;gnm_Flags
  6701.         dc.l    0            ;gnm_MutualExclude
  6702.         dc.l    0            ;gnm_UserData
  6703.  
  6704. MNChanSub1:    dc.b    NM_SUB            ;gnm_Type
  6705.         dc.b    0            ;gnm_Pad
  6706.         dc.l    Chan1MenuText1        ;gnm_Label
  6707.         dc.l    Chan1CommKey        ;gnm_CommKey
  6708.         dc.w    CHECKIT            ;gnm_Flags
  6709.         dc.l    ~1            ;gnm_MutualExclude
  6710.         dc.l    0            ;gnm_UserData
  6711.  
  6712. MNChanSub2:    dc.b    NM_SUB            ;gnm_Type
  6713.         dc.b    0            ;gnm_Pad
  6714.         dc.l    Chan2MenuText1        ;gnm_Label
  6715.         dc.l    Chan2CommKey        ;gnm_CommKey
  6716.         dc.w    CHECKIT            ;gnm_Flags
  6717.         dc.l    ~2            ;gnm_MutualExclude
  6718.         dc.l    0            ;gnm_UserData
  6719.  
  6720. MNInput1:    dc.b    NM_ITEM            ;gnm_Type
  6721.         dc.b    0            ;gnm_Pad
  6722.         dc.l    InputMenuText1        ;gnm_Label
  6723.         dc.l    0            ;gnm_CommKey
  6724.         dc.w    0            ;gnm_Flags
  6725.         dc.l    0            ;gnm_MutualExclude
  6726.         dc.l    0            ;gnm_UserData
  6727.  
  6728. MNInputSub1:    dc.b    NM_SUB            ;gnm_Type
  6729.         dc.b    0            ;gnm_Pad
  6730.         dc.l    Input1MenuText1        ;gnm_Label
  6731.         dc.l    Input1CommKey        ;gnm_CommKey
  6732.         dc.w    CHECKIT            ;gnm_Flags
  6733.         dc.l    ~1            ;gnm_MutualExclude
  6734.         dc.l    0            ;gnm_UserData
  6735.  
  6736. MNInputSub2:    dc.b    NM_SUB            ;gnm_Type
  6737.         dc.b    0            ;gnm_Pad
  6738.         dc.l    Input2MenuText1        ;gnm_Label
  6739.         dc.l    Input2CommKey        ;gnm_CommKey
  6740.         dc.w    CHECKIT            ;gnm_Flags
  6741.         dc.l    ~2            ;gnm_MutualExclude
  6742.         dc.l    0            ;gnm_UserData
  6743.  
  6744. MNTimer1:    dc.b    NM_ITEM            ;gnm_Type
  6745.         dc.b    0            ;gnm_Pad
  6746.         dc.l    TimerMenuText1        ;gnm_Label
  6747.         dc.l    0            ;gnm_CommKey
  6748.         dc.w    0            ;gnm_Flags
  6749.         dc.l    0            ;gnm_MutualExclude
  6750.         dc.l    0            ;gnm_UserData
  6751.  
  6752. MNTimerSub1:    dc.b    NM_SUB            ;gnm_Type
  6753.         dc.b    0            ;gnm_Pad
  6754.         dc.l    TimerAMenuText1        ;gnm_Label
  6755.         dc.l    TimerACommKey        ;gnm_CommKey
  6756.         dc.w    CHECKIT            ;gnm_Flags
  6757.         dc.l    ~1            ;gnm_MutualExclude
  6758.         dc.l    0            ;gnm_UserData
  6759.  
  6760. MNTimerSub2:    dc.b    NM_SUB            ;gnm_Type
  6761.         dc.b    0            ;gnm_Pad
  6762.         dc.l    TimerBMenuText1        ;gnm_Label
  6763.         dc.l    TimerBCommKey        ;gnm_CommKey
  6764.         dc.w    CHECKIT            ;gnm_Flags
  6765.         dc.l    ~2            ;gnm_MutualExclude
  6766.         dc.l    0            ;gnm_UserData
  6767.  
  6768. MNWakeUp:    dc.b    NM_ITEM            ;gnm_Type
  6769.         dc.b    0            ;gnm_Pad
  6770.         dc.l    WakeMenuText1        ;gnm_Label
  6771.         dc.l    0            ;gnm_CommKey
  6772.         dc.w    0            ;gnm_Flags
  6773.         dc.l    0            ;gnm_MutualExclude
  6774.         dc.l    0            ;gnm_UserData
  6775.  
  6776. MNWakeSub1:    dc.b    NM_SUB            ;gnm_Type
  6777.         dc.b    0            ;gnm_Pad
  6778.         dc.l    WakeMenuText2        ;gnm_Label
  6779.         dc.l    WakeCommKey1        ;gnm_CommKey
  6780.         dc.w    CHECKIT            ;gnm_Flags
  6781.         dc.l    ~1            ;gnm_MutualExclude
  6782.         dc.l    0            ;gnm_UserData
  6783.  
  6784. MNWakeSub2:    dc.b    NM_SUB            ;gnm_Type
  6785.         dc.b    0            ;gnm_Pad
  6786.         dc.l    WakeMenuText3        ;gnm_Label
  6787.         dc.l    WakeCommKey2        ;gnm_CommKey
  6788.         dc.w    CHECKIT            ;gnm_Flags
  6789.         dc.l    ~2            ;gnm_MutualExclude
  6790.         dc.l    0            ;gnm_UserData
  6791.  
  6792. MNWakeSub3:    dc.b    NM_SUB            ;gnm_Type
  6793.         dc.b    0            ;gnm_Pad
  6794.         dc.l    WakeMenuText4        ;gnm_Label
  6795.         dc.l    WakeCommKey3        ;gnm_CommKey
  6796.         dc.w    CHECKIT            ;gnm_Flags
  6797.         dc.l    ~4            ;gnm_MutualExclude
  6798.         dc.l    0            ;gnm_UserData
  6799.  
  6800. MNWakeSub4:    dc.b    NM_SUB            ;gnm_Type
  6801.         dc.b    0            ;gnm_Pad
  6802.         dc.l    WakeMenuText5        ;gnm_Label
  6803.         dc.l    WakeCommKey4        ;gnm_CommKey
  6804.         dc.w    CHECKIT            ;gnm_Flags
  6805.         dc.l    ~8            ;gnm_MutualExclude
  6806.         dc.l    0            ;gnm_UserData
  6807.  
  6808. MNWakeSub5:    dc.b    NM_SUB            ;gnm_Type
  6809.         dc.b    0            ;gnm_Pad
  6810.         dc.l    WakeMenuText6        ;gnm_Label
  6811.         dc.l    WakeCommKey5        ;gnm_CommKey
  6812.         dc.w    CHECKIT            ;gnm_Flags
  6813.         dc.l    ~16            ;gnm_MutualExclude
  6814.         dc.l    0            ;gnm_UserData
  6815.  
  6816. MNPriority:    dc.b    NM_ITEM            ;gnm_Type
  6817.         dc.b    0            ;gnm_Pad
  6818.         dc.l    PriMenuText1        ;gnm_Label
  6819.         dc.l    PriCommKey        ;gnm_CommKey
  6820.         dc.w    0             ;gnm_Flags
  6821.         dc.l    0            ;gnm_MutualExclude
  6822.         dc.l    0            ;gnm_UserData
  6823.  
  6824. MNConfirm:    dc.b    NM_ITEM            ;gnm_Type
  6825.         dc.b    0            ;gnm_Pad
  6826.         dc.l    ConfMenuText1        ;gnm_Label
  6827.         dc.l    ConfCommKey        ;gnm_CommKey
  6828.         dc.w    CHECKIT!MENUTOGGLE    ;gnm_Flags
  6829.         dc.l    0            ;gnm_MutualExclude
  6830.         dc.l    0            ;gnm_UserData
  6831.  
  6832.         dc.w    0            ;NM_END?
  6833.  
  6834. ;Menu TagList(s)
  6835.  
  6836. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  6837.         dc.l    TAG_DONE,0
  6838.  
  6839. MNPageMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6840.         dc.b    0            ;gnm_Pad
  6841.         dc.l    Menu1Name2        ;gnm_Label
  6842.         dc.l    0            ;gnm_CommKey
  6843.         dc.w    0            ;gnm_Flags
  6844.         dc.l    0            ;gnm_MutualExclude
  6845.         dc.l    0            ;gnm_UserData
  6846.  
  6847. MNPage1:    dc.b    NM_ITEM            ;gnm_Type
  6848.         dc.b    0            ;gnm_Pad
  6849.         dc.l    EditMenu1Text1        ;gnm_Label
  6850.         dc.l    Edit1CommKey        ;gnm_CommKey
  6851.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  6852.         dc.l    ~1            ;gnm_MutualExclude
  6853.         dc.l    0            ;gnm_UserData
  6854.  
  6855. MNPage2:    dc.b    NM_ITEM            ;gnm_Type
  6856.         dc.b    0            ;gnm_Pad
  6857.         dc.l    EditMenu2Text1        ;gnm_Label
  6858.         dc.l    Edit2CommKey        ;gnm_CommKey
  6859.         dc.w    CHECKIT            ;gnm_Flags
  6860.         dc.l    ~2            ;gnm_MutualExclude
  6861.         dc.l    0            ;gnm_UserData
  6862.  
  6863. MNPage3:    dc.b    NM_ITEM            ;gnm_Type
  6864.         dc.b    0            ;gnm_Pad
  6865.         dc.l    EditMenu3Text1        ;gnm_Label
  6866.         dc.l    Edit3CommKey        ;gnm_CommKey
  6867.         dc.w    CHECKIT            ;gnm_Flags
  6868.         dc.l    ~4            ;gnm_MutualExclude
  6869.         dc.l    0            ;gnm_UserData
  6870.  
  6871. MNPage4:    dc.b    NM_ITEM            ;gnm_Type
  6872.         dc.b    0            ;gnm_Pad
  6873.         dc.l    EditMenu4Text1        ;gnm_Label
  6874.         dc.l    Edit4CommKey        ;gnm_CommKey
  6875.         dc.w    CHECKIT            ;gnm_Flags
  6876.         dc.l    ~8            ;gnm_MutualExclude
  6877.         dc.l    0            ;gnm_UserData
  6878.  
  6879. MNPage5:    dc.b    NM_ITEM            ;gnm_Type
  6880.         dc.b    0            ;gnm_Pad
  6881.         dc.l    EditMenu5Text1        ;gnm_Label
  6882.         dc.l    Edit5CommKey        ;gnm_CommKey
  6883.         dc.w    CHECKIT            ;gnm_Flags
  6884.         dc.l    ~16            ;gnm_MutualExclude
  6885.         dc.l    0            ;gnm_UserData
  6886.  
  6887. MNPage6:    dc.b    NM_ITEM            ;gnm_Type
  6888.         dc.b    0            ;gnm_Pad
  6889.         dc.l    EditMenu6Text1        ;gnm_Label
  6890.         dc.l    Edit6CommKey        ;gnm_CommKey
  6891.         dc.w    CHECKIT            ;gnm_Flags
  6892.         dc.l    ~32            ;gnm_MutualExclude
  6893.         dc.l    0            ;gnm_UserData
  6894.  
  6895. MNP2SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  6896.         dc.b    0            ;gnm_Pad
  6897.         dc.l    NM_BARLABEL        ;gnm_Label
  6898.         dc.l    0            ;gnm_CommKey
  6899.         dc.w    0            ;gnm_Flags
  6900.         dc.l    0            ;gnm_MutualExclude
  6901.         dc.l    0            ;gnm_UserData
  6902.  
  6903. MNQuit2:    dc.b    NM_ITEM            ;gnm_Type
  6904.         dc.b    0            ;gnm_Pad
  6905.         dc.l    QuitMenuText1        ;gnm_Label
  6906.         dc.l    QuitCommKey        ;gnm_CommKey
  6907.         dc.w    0            ;gnm_Flags
  6908.         dc.l    0            ;gnm_MutualExclude
  6909.         dc.l    0            ;gnm_UserData
  6910.  
  6911.         dc.w    0            ;NM_END?
  6912.  
  6913. ;Menu TagList(s) for Edit window
  6914.  
  6915. MenuTagList2:    dc.l    GTMN_Menu,MNPageMenu1
  6916.         dc.l    TAG_DONE,0
  6917.  
  6918. ;Commodities stuff (Brokers etc..)
  6919.  
  6920. NewBroker1:    dc.b NB_VERSION,0        ;Version, Reserved 1
  6921.         dc.l VSName1,VSTitle,VSDesc    ;Name, Title, Description
  6922.         dc.w NBU_UNIQUE!NBU_NOTIFY,COF_SHOW_HIDE    ;Uniq, Flags
  6923. NBPri:        dc.b 0,0            ;Priority, Reserved 2
  6924.         dc.l 0                ;Port
  6925.         dc.w 0                ;Reserved channel
  6926.  
  6927. PREFS_START:
  6928.  
  6929. Prefs:        dc.l    VSFileVersion
  6930. PrefsOnOff:    dc.b    0        ;0=Off, 1=On
  6931. PrefsSampType:    dc.b    SAMP_GENERIC    ;0=Perf.Snd, 1=SndMstr, 2=Generic, 3=DSS8
  6932. PrefsSampRes:    dc.b    RES_HI        ;0=High, 1=Low
  6933. PrefsTimer    dc.b    TIMER_B        ;0=Timer B, 1=Timer A
  6934. PrefsGain:    dc.b    0        ;DSS gain
  6935. PrefsChannel:    dc.b    CHANNEL_LEFT    ;0=right, 1=left
  6936. PrefsInput:    dc.b    INPUT_LINE    ;0=mic, 1=line
  6937. PrefsConfirm:    dc.b    0        ;0=No, 1=Yes
  6938. PrefsPriority:    dc.l    120        ;Priority
  6939. PrefsScore:    dc.w    AccVal4        ;Score needed
  6940. PrefsWake:    dc.b    0        ;0=No, Other = Seconds
  6941. PrefsPad1:    dc.b    0
  6942. Future1:    dc.w    0
  6943. Future2:    dc.l    0
  6944. Future3:    dc.l    0
  6945. Future4:    dc.l    0
  6946.  
  6947. Alt1XY:
  6948. Alt1XPos:    dc.w    200
  6949. Alt1YPos:    dc.w    31
  6950.  
  6951. DatBuffer:    dc.b    "S:VoiceShell.DAT"
  6952.         dcb.b    34-12,0
  6953.  
  6954. PREFS_END:    dc.l    0,0
  6955.  
  6956. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  6957.  
  6958.         Section VS,BSS
  6959.  
  6960. DATA_START:
  6961.  
  6962. MapBuffer:    ds.b    (VocabSIZE*304)        ;64 words
  6963.  
  6964. CmdList:    ds.b    (VocabSIZE*GADLENGTH)
  6965.  
  6966. ErrCmd1:    ds.b    GADLENG2        ;No Command
  6967. ErrCmd2:    ds.b    GADLENG2        ;Cmd Failed
  6968. ErrCmd3:    ds.b    GADLENG2        ;No Match
  6969. ErrCmd4:    ds.b    GADLENG2        ;Too Loud
  6970. ErrCmd5:    ds.b    GADLENG2        ;Too Low
  6971. ErrCmd6:    ds.b    GADLENG2        ;Too Noisy
  6972. ConfCmd1:    ds.b    GADLENG2        ;Confirm
  6973. ConfCmd2:    ds.b    GADLENG2        ;Not Confirmed
  6974. WakeCmd1:    ds.b    GADLENG2        ;Confirm
  6975.  
  6976. DATA_END:    ds.l    1
  6977.  
  6978. DataSize:    EQU    (DATA_END-DATA_START)
  6979.  
  6980. StringBuffer:    ds.b    256
  6981.  
  6982.         Section VS,DATA,CHIP
  6983.  
  6984.         ds.w    0
  6985.  
  6986. ClockPointer1:    dc.w    $0000,$0000
  6987.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  6988.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  6989.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  6990.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  6991.         dc.w    $0000,$0000
  6992.  
  6993.         end
  6994.